2014-10-08 72 views
0

我目前正在構建一個應用程序,並且遇到持久性問題。 我有2個活動A和B.在A中定義信息'aa'和B信息'bb'('aa'通過intent提供給B)。當在B中並通過導航後退按鈕(在操作欄中)回到A時,我希望A有權訪問'bb'值,以便我可以根據它執行一些邏輯。對你來說,堅持這些數據在A中訪問它的最佳方式是什麼? 在此感謝您的時間和幫助。 乾杯, 本傑明建議在應用程序中導航時保持數據持久

回答

1

你可以嘗試使用onActivityResult。

在活動B:

@Override 
public void onBackPressed() { 
    // super.onBackPressed(); 

    Intent intent = new Intent(); 
    //put something in intent 
    setResult(RESULT_OK, intent); 
    finish(); 
} 

在活動答:

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    // TODO Auto-generated method stub 
    super.onActivityResult(requestCode, resultCode, data); 
    if (requestCode == 1) { 
     if (resultCode == RESULT_OK) { 

      //get extra... 

     } 
    } 
} 
+1

非常感謝Meneer :)!它工作完美。當用戶單擊導航欄中的後退按鈕以使所有內容保持一致時,只需添加類似的邏輯即可。 – Ben 2014-10-08 09:43:10

0

當你從活動一開始活動B,使用startActivityForResult(Intent, int);而非正常startActivity(Intent);,並在活動覆蓋onActivityResult()一個

例如。

public class ActivityA extends Activity{ 

    private static final int MY_REQUEST_CODE = 123; 

    @Override 
    public void onCreate(Bundle savedInstanceState){ 
     super.onCreate(savedInstanceState); 

     //Setup your activity and views... 

     //Assuming that you start ActivityB when a button is clicked. 
     btnExample.setOnClickListener(new View.OnClickListener(){ 
      @Override 
      public void onClick(View v){ 

       Intent intent = new Intent(ActivityA.this, ActivityB.class); 

       //Setup your intent and put the data. 

       startActivityForResult(intent, MY_REQUEST_CODE); 

      } 
     }); 
    } 

    @Override 
    public void onActivityResult(int requestCode, int resultCode, Intent backIntent) 
    { 
     super.onActivityResult(requestCode, resultCode, data); 
     if(resultCode == RESULT_OK && requestCode == MY_REQUEST_CODE && backIntent != null){ 
      //Handle your logic here. 
     } 
    } 
} 

和活動B,覆蓋onBackPressed

public class ActivityB extends Activity{ 

    //Setup your activity 

    @Override 
    public void onBackPressed() 
    { 
     Intent backIntent = new Intent(); 
     //Put the data to backIntent 
     setResult(RESULT_OK, backIntent); 
     super.onBackPressed(); 
    } 

    //The rest of your code 

} 
+0

也謝謝你Malvin!這很好! – Ben 2014-10-08 09:43:28

相關問題