回到意图先前的活动回到意图先前的活动(back to previous activity with

2019-05-12 05:42发布

我有两个活动,当我按下第一个活动进入,它会打开第二个活动,它包含一个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"));
}

但没有发生。 我怎样才能意图,并返回到之前的活动?

Answer 1:

你要调用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"));
}

看到这个答案的另一个例子



Answer 2:

你忘了启动活动之前,所以正确的

finish();

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


Answer 3:

请参考以下链接: http://developer.android.com/training/basics/intents/result.html

希望它可以帮助你。



Answer 4:

试试这个:

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


Answer 5:

要求结果的第二个活动。 它会回报你的OnAcitiviyResult选择的数据。 就像下面:

链接发布



Answer 6:

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了。



文章来源: back to previous activity with intent