Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何打开一个活动,输入数据,然后使用数据返回到第一个活动?_Android_Android Intent - Fatal编程技术网

Android 如何打开一个活动,输入数据,然后使用数据返回到第一个活动?

Android 如何打开一个活动,输入数据,然后使用数据返回到第一个活动?,android,android-intent,Android,Android Intent,好的,这个标题并不是一个很重要的标题,但是不要评判我。我已经搜索了这个网站,还有很多其他的,但是我似乎没有找到正确的答案。问题是: 我创建了一个android应用程序,它有一个主要活动(活动A),它打开另一个活动B,我在其中输入一些数据,这些数据应该传输回第一个活动,然后记录到数据库中 我是这样做的: 在活动A中: -我调用一个新的intent,然后调用startActivityForResult()方法 在第二个活动中,当我点击“保存”按钮时,将执行以下操作: btnSave.setOnCli

好的,这个标题并不是一个很重要的标题,但是不要评判我。我已经搜索了这个网站,还有很多其他的,但是我似乎没有找到正确的答案。问题是:

我创建了一个android应用程序,它有一个主要活动(活动A),它打开另一个活动B,我在其中输入一些数据,这些数据应该传输回第一个活动,然后记录到数据库中

我是这样做的:

在活动A中:

-我调用一个新的intent,然后调用
startActivityForResult()
方法

在第二个活动中,当我点击“保存”按钮时,将执行以下操作:

btnSave.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {

                Intent i = new Intent(getApplicationContext(), MainActivity.class);

                i.putExtra("date", dateText.getText().toString());
                i.putExtra("time", timeText.getText().toString());
                i.putExtra("text", taskText.getText().toString());
                setResult(100);
                startActivity(i);

            }
        });
当我回到第一个活动(主活动)时,就会调用这个方法

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if(resultCode==100)
{
            i = getIntent();
        String text = i.getStringExtra("text");
            String date = i.getStringExtra("date");
            String time = i.getStringExtra("time");
            Toast.makeText(this, text + "-" + date + "-" + time, Toast.LENGTH_LONG).show();
        }

        super.onActivityResult(requestCode, resultCode, data);
}       
对于toast消息,我只得到null值,这意味着数据没有从第二个活动传输回第一个活动。有人能帮我吗?顺便说一句,数据应该保存到数据库中,但这是另一个问题,我刚才提到了它,以防以后它可能会帮助我避免事情复杂化


提前感谢:D

在按钮保存单击侦听器中,您无需使用startActivity()调用
Intent
。就是这样

  Intent returnIntent = new Intent();
      returnIntent.putExtra("SelectedBook",book);
      setResult(RESULT_OK,returnIntent);        
      finish();
在onActivityResult()中,使用
意图数据获取数据


在你的第二个活动中,你不需要称之为startActivity。您可以调用或,然后
finish()


在第一个活动中,检索结果。

尝试在第二个活动中使用此选项

Intent returnIntent = new Intent();
returnIntent.putExtra("SelectedBook",book);
returnIntent.putExtra("date", dateText.getText().toString());
returnIntent.putExtra("time", timeText.getText().toString());
returnIntent.putExtra("text", taskText.getText().toString());
setResult(RESULT_OK,returnIntent);        
finish();
在第一个活动中,尝试使用

data.getStringExtra("date"); 

与之类似的还有剩余的。

您可以通过多种方式从不同的活动中获取数据

  • 您正在使用的一个,错误是不要调用
    startActivity
    和 只需调用
    finish()
  • 使用静态变量并直接在这些公共字符串上输入数据 变量并将其带到任何地方
  • 使用SharedReferences并通过使用 键值,即不仅仅在
    onActivityResult

  • 它起作用了。通过你提供的链接,我得到了正确的答案:欢迎你。。很抱歉,这是莎拉,不是莎拉