0

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

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

我这样做:

在活动 A 中:

-我调用一个新的意图,然后调用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 消息我只得到空值,这意味着数据没有从第二个活动传输回第一个活动。有人可以帮我吗,顺便说一句,数据应该保存到数据库中,但这是另一个问题,我只是提到它,以防它可能有助于以后不使事情复杂化。

先谢谢了

4

4 回答 4

1

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

  Intent returnIntent = new Intent();
      returnIntent.putExtra("SelectedBook",book);
      setResult(RESULT_OK,returnIntent);        
      finish();

并在 onActivityResult() 获取数据Intent data

请参阅此示例

于 2012-10-15T16:40:10.783 回答
1

你有很多方法可以从不同的活动中获取数据,

  1. 您正在使用的那个,错误是不要打电话startActivity而只是打电话finish(); 链接
  2. 使用静态变量并直接在这些公共字符串变量上输入数据并在任何地方获取。
  3. 使用 SharedPreferences 并通过仅使用键值在任何地方使用保存的数据,即不仅仅是在onActivityResult 链接中
于 2012-10-15T16:54:25.497 回答
0

尝试在第二个活动中使用它

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"); 

和其余的类似。

于 2012-10-15T16:48:10.480 回答
0

在您的第二个活动中,您不调用 startActivity。您可以调用setResult(int)setResult(int, Intent)然后finish()

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

于 2012-10-15T16:41:24.980 回答