如何打开活动,输入数据,并使用数据返回第一个活动?

时间:2012-10-15 16:30:38

标签: android android-intent

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

我创建了一个具有一个主要活动(活动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消息我只获得空值,这意味着数据没有从第二个活动传回第一个。有人可以帮助我,顺便说一下,数据应该保存到数据库中,但这是另一个问题,我刚才提到它以防万一以后不能让我复杂化。

提前致谢:D

4 个答案:

答案 0 :(得分:1)

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

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

在onActivityResult()中使用Intent data

获取数据

请参阅此Example

答案 1 :(得分:1)

您可以通过多种方式从其他活动中获取数据,

  1. 您正在使用的那个,错误是不要拨打startActivity和 只需致电finish(); link
  2. 即可
  3. 使用静态变量并直接在这些公共字符串上输入数据 变量并随处获取。
  4. 使用SharedPreferences并使用保存的数据 关键值,即不只是onActivityResult link

答案 2 :(得分:0)

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

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

答案 3 :(得分: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"); 

和剩下的类似。