回到以前的意图活动

时间:2013-12-13 03:41:16

标签: android android-intent

我有两个活动,当我在第一个活动上按Enter键时,它将打开第二个活动,它包含一个ListView,当我从ListView中选择一个项目时,它将获得其值和带回第一项活动

这是我尝试过的;

第二项活动

listPerasat.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() {
     public void onItemClick(AdapterView<?> parent, View view,
            int position, long id) {
            NamaPrst = ((TextView) view.findViewById(R.id.txtListNamaPrst)).getText().toString();
            Intent i = new Intent();
            i.putExtra("NAMA_PERASAT", NamaPrst);
            finish();
        }
    });
}
第一项活动

edtText.setText(getIntent().getStringExtra("NAMA_PERASAT")); // inside onCreate

public void onActivityResult(int requestCode,int resultCode, Intent data)
{
    edtText.setText(getIntent().getStringExtra("NAMA_PERASAT"));
}

但没有任何事情发生。我怎样才能获得意图并回到之前的活动?

6 个答案:

答案 0 :(得分:6)

您想为此致电startActivityForResult()。所以在您的第一个Activity类似

Intent i = new Intent(FirstActivity.this, SecondActivity.class);
startActivityForResult(i, SOME_REQUEST_CODE); // you give SomeRequesSOME_REQUEST_CODE an int value

然后在您的onItemClick()中,您需要致电setResult()并发送回Intent。这会在您的第一个onActivityResult()

中调用Activity
listPerasat.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() {
 public void onItemClick(AdapterView<?> parent, View view,
        int position, long id) {
        NamaPrst = ((TextView) view.findViewById(R.id.txtListNamaPrst)).getText().toString();
        Intent i = new Intent();
        i.putExtra("NAMA_PERASAT", NamaPrst);
        setResult(RESULT_OK, i);
        finish();
    }
});
}

在第一个onActivityResult()的{​​{1}}中,请勿致电Activity。这会尝试使用最初启动您的第一个getIntent()的{​​{1}}。相反,请使用您传回的Intent

Activity

See this answer for another example

答案 1 :(得分:0)

试试这个:

Intent resultIntent = new Intent(ctx, ViewMessageDialog.class);
resultIntent.putExtra("NAMA_PERASAT", message);
ctx.startActivity(resultIntent);

答案 2 :(得分:0)

你忘了在

之前开始一项活动
finish();

startActivity(intent);
// or to start with a back result
// startActivityForResult(intent, YOUR_REQUEST_CODE, EXTRA_BUNDLE);
finish();

答案 3 :(得分:0)

请参阅此链接: http://developer.android.com/training/basics/intents/result.html

希望它对你有所帮助。

答案 4 :(得分:0)

调用结果的第二个活动。它将在OnActivityResult中返回您选择的数据。 如下所示:

link to post

答案 5 :(得分:0)

second activity中编辑您的代码

Intent i = new Intent();
        i.putExtra("NAMA_PERASAT", NamaPrst);
        setResult(RESULT_OK, i);
        finish();

然后在first activity's onActivityResult()中,首先检查结果是否为“OK”,即选择了什么。

   public void onActivityResult(int requestCode,int resultCode, Intent data)
    {
      if(resultCode == Activity.RESULT_OK){
        edtText.setText(data.getStringExtra("NAMA_PERASAT"));
      }
    }

如果在打开第二个活动后您没有选择任何内容并按下back button,那么您将收到错误,因为second activity没有传递任何内容。因此,首先检查是否已执行setResult(RESULT_OK, i);,即添加了extras,我们现在手动设置所有内容都为OK