Android EditActivity 代码优化:Intent 使用与数据传递
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);
}
}
代码修改说明
- 将'intent'声明为类成员变量,并在'onCreate()'方法中初始化它。
- 在'onKeyDown()'方法中,直接使用类成员变量'intent'。
- 在'onKeyDown()'方法中,将'intent'传递给'setResult()'方法。
代码优化的好处
- 提高代码可读性: 将 Intent 声明为类成员变量可以避免在不同方法中重复获取 Intent 对象,从而使代码更加简洁易懂。
- 减少代码冗余: 避免重复获取 Intent 对象,可以减少代码行数,提高代码效率。
- 增强代码可维护性: 使用类成员变量可以方便地修改 Intent 的属性,便于后续代码的维护。
总结
通过将 Intent 声明为类成员变量并进行适当初始化,可以有效地简化 EditActivity 的代码并提高代码可读性。希望本文能够帮助你更好地理解 Intent 的使用以及数据传递的最佳实践。
如果你还有其他问题或需要进一步帮助,请随时提供更多代码和相关信息。
原文地址: https://www.cveoy.top/t/topic/cgXZ 著作权归作者所有。请勿转载和采集!