Android EditActivity 代码优化:Intent 使用与数据传递

本文将详细介绍如何优化 Android 中 EditActivity 的代码,主要关注 Intent 的声明和使用,以及数据传递的最佳实践。

优化后的 EditActivity 代码

根据你的需求,我对'EditActivity.java'进行了一些修改。请查看以下代码:

public class EditActivity extends BaseActivity {

    EditText et;

    private Toolbar myToolbar;
    private String old_content = "";
    private String old_time = "";
    private int old_Tag = 1;
    private long id = 0;
    private int openMode = 0;
    private int tag = 1;
    private Intent intent;  // 将intent声明为类成员变量

    @SuppressLint("MissingInflatedId")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.edit_layout);

        myToolbar = findViewById(R.id.mytoolbar);
        et = findViewById(R.id.添加内容);
        intent = getIntent(); // 初始化intent

        int openNode = intent.getIntExtra("mode", 0);
        if (openNode == 3) { // 打开已存在的note
            id = intent.getLongExtra("id", 0);
            old_content = intent.getStringExtra("content");
            old_time = intent.getStringExtra("time");
            old_Tag = intent.getIntExtra("tag", 1);
            et.setText(old_content);
            et.setSelection(old_content.length());
        }
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_HOME) {
            return true;
        } else if (keyCode == KeyEvent.KEYCODE_BACK) {
            autoSetMessage();
            String content = et.getText().toString().trim();
            if (content.isEmpty()) {
                content = "Default Content";
            }
            String time = dateToStr();

            intent.putExtra("content", content);
            intent.putExtra("time", time);
            setResult(RESULT_OK, intent);
            finish();
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }

    public void autoSetMessage() {
        if (openMode == 4) {
            if (et.getText().toString().length() == 0) {
                intent.putExtra("mode", -1);  // nothing new happens
            } else {
                intent.putExtra("mode", 0);  // new one note
                intent.putExtra("content", et.getText().toString());
                intent.putExtra("time", dateToStr());
                intent.putExtra("tag", tag);
            }
        } else {
            if (et.getText().toString().equals(old_content) && !tagChange) {
                intent.putExtra("mode", -1); // edit nothing
            } else {
                intent.putExtra("mode", 1);  // edit the content
                intent.putExtra("content", et.getText().toString());
                intent.putExtra("time", dateToStr());
                intent.putExtra("id", id);
                intent.putExtra("tag", tag);
            }
        }
    }

    public String dateToStr() {
        Date date = new Date();
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        return simpleDateFormat.format(date);
    }
}

代码修改说明

  1. 将'intent'声明为类成员变量,并在'onCreate()'方法中初始化它。
  2. 在'onKeyDown()'方法中,直接使用类成员变量'intent'。
  3. 在'onKeyDown()'方法中,将'intent'传递给'setResult()'方法。

代码优化的好处

  • 提高代码可读性: 将 Intent 声明为类成员变量可以避免在不同方法中重复获取 Intent 对象,从而使代码更加简洁易懂。
  • 减少代码冗余: 避免重复获取 Intent 对象,可以减少代码行数,提高代码效率。
  • 增强代码可维护性: 使用类成员变量可以方便地修改 Intent 的属性,便于后续代码的维护。

总结

通过将 Intent 声明为类成员变量并进行适当初始化,可以有效地简化 EditActivity 的代码并提高代码可读性。希望本文能够帮助你更好地理解 Intent 的使用以及数据传递的最佳实践。

如果你还有其他问题或需要进一步帮助,请随时提供更多代码和相关信息。


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

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