首页 > 解决方案 > 从两个不同的活动将 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);
            }
        });
    }

标签: android-studiolistviewandroid-edittext

解决方案


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

推荐阅读