[英]Keep ViewModel instance when navigating back with by navGraphViewModel
[英]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.