Dar*_*ing 3 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();
}
});
}
Run Code Online (Sandbox Code Playgroud)
在第一次活动
edtText.setText(getIntent().getStringExtra("NAMA_PERASAT")); // inside onCreate
Run Code Online (Sandbox Code Playgroud)
要么
public void onActivityResult(int requestCode,int resultCode, Intent data)
{
edtText.setText(getIntent().getStringExtra("NAMA_PERASAT"));
}
Run Code Online (Sandbox Code Playgroud)
但什么都没发生.我怎样才能获得意图并回到之前的活动?
你想打电话startActivityForResult()给这个.所以在你的第Activity一个类似的东西
Intent i = new Intent(FirstActivity.this, SecondActivity.class);
startActivityForResult(i, SOME_REQUEST_CODE); // you give SomeRequesSOME_REQUEST_CODE an int value
Run Code Online (Sandbox Code Playgroud)
然后在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();
}
});
}
Run Code Online (Sandbox Code Playgroud)
在onActivityResult()你的第一次Activity,不要打电话getIntent().这将尝试使用Intent最初开始你的第一个Activity.相反,使用Intent你传回来
@Override
public void onActivityResult(int requestCode,int resultCode, Intent data)
{
edtText.setText(data.getStringExtra("NAMA_PERASAT"));
}
Run Code Online (Sandbox Code Playgroud)