我有两个活动,当我在第一个活动上按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"));
}
但没有任何事情发生。我怎样才能获得意图并回到之前的活动?
答案 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
答案 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中返回您选择的数据。 如下所示:
答案 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
。