android-studio - 从两个不同的活动将 EditText 值传递给 ListView
问题描述
如果您能在这里帮助我,将不胜感激。我正在创建一个待办事项列表,其中 ListView 位于 MainToDoList 活动中,并带有一个“添加新任务”按钮,可将用户带到第二个活动。
在第二个活动中,有一个编辑文本字段,用户可以在其中输入任务的标题。两个按钮是“保存”和“取消”
我的问题是,如何在按下保存按钮后传递编辑文本值以将其显示到第一个活动的列表视图中。
第一个活动:
public class Todolistactivity extends AppCompatActivity {
private Button btn;
private ListView list;
private DrawerLayout drawer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.todolistactivity);
btn = findViewById(R.id.addTask);
list = findViewById(R.id.task_list);
}
private void addTask() {
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent(Todolistactivity.this, EditToDo.class));
}
});
}
Second Activity:
public class EditToDo extends Todolistactivity {
private static final String TAG = "EditToDo";
private Button save;
private Button cancel;
private EditText title;
@Override
protected void onCreate (Bundle savedInstance){
super.onCreate(savedInstance);
setContentView(R.layout.activity_taskedit);
save = findViewById(R.id.saveTask);
cancel = findViewById(R.id.cancelTask);
title = findViewById(R.id.taskTitle);
saveButton();
cancelButton();
}
private void saveButton(){
save.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent backToDo = new Intent
(getBaseContext(),Todolistactivity.class);
String titleEntered = title.getText().toString();
backToDo.putExtra("task", titleEntered);
startActivity(backToDo);
}
});
}
解决方案
startActivityForResult
在你的Todolistactivity
课堂上使用
private void addTask() {
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivityForResult(new Intent(Todolistactivity.this, EditToDo.class), 100); // 100 is request code.
}
});
}
//...
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 100) {
if(resultCode == Activity.RESULT_OK){
String result = data.getStringExtra("task");
}
else if (resultCode == Activity.RESULT_CANCELED) {
//...
}
}
}
在你的EditToDo
班级
private void saveButton(){
save.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String titleEntered = title.getText().toString();
Intent intent = new Intent();
intent.putExtra("task", titleEntered);
setResult(Activity.RESULT_OK, intent);
finish();
}
});
}
推荐阅读
- javascript - 将 scala 代码转换为 Python 面临长 html java 脚本嵌入字符串的问题
- javascript - 如果存在第二个选项值,则在获得第二个选择选项值后,另一个 div 将隐藏
- node.js - mongoose 什么时候在 mongoDB 中创建索引?
- flutter - 发现task ':app:compileFlutterBuildDebug的配置有问题
- python - 我可以运行我的 selenium 代码以使其不会触发 cloudflare 吗?
- python - 如何在python中完成另一个函数后运行一个函数
- clang - libfuzzer fuzzing 线束崩溃不可重现
- c# - 为什么测试用户的组成员身份不会产生预期的结果?
- sql - 如何在几行中排名
- data-structures - 数据结构 - 抽象数据类型 VS 具体数据类型