我有两个活动,当我按下第一个活动进入,它会打开第二个活动,它包含一个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"));
}
但没有发生。 我怎样才能意图,并返回到之前的活动?
你要调用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()
在你的第一个Activity
,不叫getIntent()
这将尝试使用Intent
最初开始你的第一个Activity
。 相反,使用Intent
你传回
@Override
public void onActivityResult(int requestCode,int resultCode, Intent data)
{
edtText.setText(data.getStringExtra("NAMA_PERASAT"));
}
看到这个答案的另一个例子
你忘了启动活动之前,所以正确的
finish();
即
startActivity(intent);
// or to start with a back result
// startActivityForResult(intent, YOUR_REQUEST_CODE, EXTRA_BUNDLE);
finish();
请参考以下链接: http://developer.android.com/training/basics/intents/result.html
希望它可以帮助你。
试试这个:
Intent resultIntent = new Intent(ctx, ViewMessageDialog.class);
resultIntent.putExtra("NAMA_PERASAT", message);
ctx.startActivity(resultIntent);
要求结果的第二个活动。 它会回报你的OnAcitiviyResult选择的数据。 就像下面:
链接发布
在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
了。