通过两个不同的活动将EditText值传递给ListView

时间:2019-07-24 03:43:23

标签: android-studio listview android-edittext

如果您能在这里帮助我,请多谢。 我正在创建一个待办事项列表,其中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);
            }
        });
    }

1 个答案:

答案 0 :(得分:0)

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