簡體   English   中英

建議在應用程序中導航時保持數據持久

[英]Advises to keep data persisted when navigating back in application

我目前正在構建一個應用程序,並且面臨持久性問題。 我有2個活動A和B。在AI中定義信息“ aa”,在B中定義信息“ bb”(通過意圖向B提供“ aa”)。 在B中並通過導航后退按鈕(在操作欄中)通過A返回到A時,我希望A可以訪問'bb'值,以便我可以基於該值執行一些邏輯。 對您來說,持久保存此數據以在A中訪問它的最佳方法是什么? 在此先感謝您的時間和幫助。 干杯本傑明

您可以嘗試使用onActivityResult。

在活動B中:

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

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

在活動A中:

@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...

        }
    }
}

從活動A啟動活動B時,請使用startActivityForResult(Intent, int); 而不是正常的startActivity(Intent); 並覆蓋活動A中的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

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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