Android开发:重写onKeyDown()方法实现返回键保存数据
Android开发:重写onKeyDown()方法实现返回键保存数据
在Android应用开发中,我们经常需要在用户按下返回键时执行一些特定的操作,例如保存数据或进行一些清理工作。这时,我们可以通过重写Activity的onKeyDown()方法来实现。
以下是一个示例,演示如何在EditActivity中重写onKeyDown()方法,实现按下返回键时保存EditText中的数据,并将数据传递回调用Activity:javapackage com.example.studywork;
import android.annotation.SuppressLint;import android.content.Intent;import android.os.Bundle;import android.view.KeyEvent;import android.widget.EditText;
import androidx.appcompat.app.AppCompatActivity;
import java.text.SimpleDateFormat;import java.util.Date;
public class EditActivity extends BaseActivity {
EditText et; private String content; private String time;
@SuppressLint('MissingInflatedId') @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.edit_layout); et = findViewById(R.id.添加内容); }
@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_HOME) { return true; } else if (keyCode == KeyEvent.KEYCODE_BACK) { String content = et.getText().toString().trim(); if (content.isEmpty()) { content = 'Default Content'; } String time = dateToStr();
Intent intent = new Intent(); intent.putExtra('content', content); intent.putExtra('time', time); setResult(RESULT_OK, intent); finish(); return true; } return super.onKeyDown(keyCode, event); }
public String dateToStr() { Date date = new Date(); SimpleDateFormat simpleDateFormat = new SimpleDateFormat('yyyy-MM-dd HH:mm:ss'); return simpleDateFormat.format(date); }}
代码解析:
- 重写
onKeyDown()方法: - 当用户按下按键时,系统会调用该方法。 -keyCode参数表示按下的按键码,event参数包含按键事件的详细信息。2. 处理返回键事件: - 使用if (keyCode == KeyEvent.KEYCODE_BACK)判断是否按下返回键。3. 获取EditText内容: - 使用et.getText().toString().trim()获取EditText中的文本内容,并去除首尾空格。4. 设置默认内容: - 使用content.isEmpty()判断内容是否为空,如果为空,则设置默认值'Default Content'。5. 获取当前时间: - 调用dateToStr()方法获取当前时间,并格式化为字符串。6. 创建Intent并传递数据: - 创建一个Intent对象,用于传递数据回调用Activity。 - 使用intent.putExtra()方法将内容和时间信息添加到Intent中。7. 设置结果码并结束Activity: - 使用setResult(RESULT_OK, intent)方法设置结果码为RESULT_OK,并将Intent传递回调用Activity。 - 调用finish()方法结束当前Activity。
注意:
- 需要将
R.id.添加内容替换为你在edit_layout.xml中定义的实际EditText的ID。- 在调用Activity中,可以通过onActivityResult()方法接收返回的数据。
原文地址: http://www.cveoy.top/t/topic/bzrl 著作权归作者所有。请勿转载和采集!