簡體   English   中英

StartActivityForResult返回

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM