sft*_*dev 9 android android-activity
我有一个具有此转换的应用程序:
A -> B -> C -> D-> C
Run Code Online (Sandbox Code Playgroud)
进入后C,我必须检查一个标志.然后我必须将其作为意图传递(让我们说intentX = false)D.做完之后D,它会C在按下按钮后返回.我所做的只是再次传递intentX值为true,然后再次传递startActivity C. 那么它发生了什么呢?它创造了另一个活动C.
我希望发生的是,我不会有开始新的活动C,但只调用使用以前的C super.onBackPressed().但我无法传递新的价值intentX.还有其他方式,实现我想要的.我可能错过了一些.
cod*_*gic 14
你想要的是什么startActivityForResult().当你走的时候C到D的,而不是使用,startActivity()使用替代startActivityForResult().然后,当你想要返回时D,C你可以使用setResult()包含一个可以传回的Intent对象.extrasC
我不建议这样做的onBackPressed(),如果你不具备,因为这不会是用户期望的结果.相反,您应该使用诸如Button点击之类的事件返回此数据.
所以,C你会做类似的事情
Intent i = new Intent(new Intent(C.this, D.class);
startActivityForResult(i, 0);
Run Code Online (Sandbox Code Playgroud)
然后在D你准备好回来的时候
Intent i = new Intent();
i.putExtra(); // insert your extras here
setResult(0, i);
Run Code Online (Sandbox Code Playgroud)
然后当你返回时C你将输入这个方法(取自Docs)
protected void onActivityResult(int requestCode, int resultCode,
Intent data) {
if (requestCode == PICK_CONTACT_REQUEST) {
if (resultCode == RESULT_OK) {
// A contact was picked. Here we will just display it
// to the user.
startActivity(new Intent(Intent.ACTION_VIEW, data));
/*
can also get the extra sent back through data
using data.getStringExtra("someKey");
assuming the extra was a String
*/
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8620 次 |
| 最近记录: |