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);    }}

代码解析:

  1. 重写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()方法接收返回的数据。
Android开发:重写onKeyDown()方法实现返回键保存数据

原文地址: http://www.cveoy.top/t/topic/bzrl 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录