2014-10-08 41 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

相关问题