![](/img/trans.png)
[英]Android : startActivityForResult() with BACK button functionality
[英]StartActivityForResult go back
我正在將StartActivityForResult用於多個活動。 我的主要活動是初始化它的地方。 在第二個活動中,我輸入了一些值並傳遞給第三個活動。 現在,當我進行第三個活動時,如果我想編輯傳遞的值,我希望能夠返回到第二個活動。 我該怎么辦?
MainAct.java
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE)
{
if (resultCode == Activity.RESULT_OK)
{
//Something
}
}
SecondAct.java
Intent vd2 = new Intent(ViolatorDetails1.this,ViolatorDetails2.class);
vd2.putExtra("name",name);
vd2.putExtra("lname",lname);
vd2.putExtra("lnumber",lnumber);
vd2.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
vd2.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
startActivity(vd2);
finish();
ThirdAct.java
Intent intent = new Intent();
intent.putExtra("firstname",name);
intent.putExtra("lastname", lname);
intent.putExtra("licensenumber", lnumber);
setResult(Activity.RESULT_OK, intent);
finish();
我如何才能從第三活動返回第二活動以編輯某些值(如果有)?
啟動第三個活動時,請勿在第二個活動上調用finish()。
然后,當第三項活動完成時,將調用onActivityResult()。
呼叫
startActivityForResult(vd2);
代替
startActivity(vd2);
只需刪除finish();
Intent vd2 = new Intent(ViolatorDetails1.this,ViolatorDetails2.class);
vd2.putExtra("name",name);
vd2.putExtra("lname",lname);
vd2.putExtra("lnumber",lnumber);
vd2.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
vd2.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
startActivity(vd2);
finish(); //remove this line
這樣,當您的第三個活動關閉時,用戶將返回到第二個活動,您還應該在第二個活動中實現onActivityResult
,以便您可以處理要編輯或已完成的天氣用戶,並應返回到第一個活動! (即,設置意圖的結果來自第一個活動,並完成第二個活動!)
這是我在代碼中的意思:在您的第二項活動中,
@override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE)
{
if (resultCode == Activity.RESULT_OK)
{
// user should have done his job on 3rd activity and we should finish the 2nd activity to go back to first activity!
}else{
//user still editing!
}
}
而不是startActivity(vd2);
做startActivityForResult(vd2);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.