回到以前的意图活动

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)

但什么都没发生.我怎样才能获得意图并回到之前的活动?

cod*_*gic 6

你想打电话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)

请参阅此答案以获取另一个示例