如何在Android中使用onBackPresed Button?

时间:2016-02-08 05:59:20

标签: android

我的Android应用程序中有两个活动'A'和'B'。

1)我第一次从'A'

进入活动'B'

2)在活动'B'中我有2个列表视图,每当我执行两个列表视图的onItemClickListener时,我都将布尔值存储在首选项中。

3)之后当我想回到活动'A'时,我想要在活动'A'中检索首选项值。

我已经尝试了很多但不能完美地工作

这是我的一些代码 onCreate()方法中的活动'A'

      booleanValue_one = sharedPreferences.getBoolean("LISTVIEW_EVENT_ONE", false);
      booleanValue_two = sharedPreferences.getBoolean("LISTVIEW_EVENT_TWO", false); 
      Log.e("", "booleanValue_one=" + booleanValue_one + " booleanValue_two=" + booleanValue_two + " booleanValue_three = " + booleanValue_three);

活动'B'onBackPressed()代码

@Override
    public void onBackPressed() {
        super.onBackPressed();
        Intent a = new Intent(B.this, A.class);
        startActivity(a);
        overridePendingTransition(R.anim.slide_in_bottom, R.anim.slide_out_bottom);
    }

有人可以帮助我如何使用活动'B'的onBackPressed()更新我以前的活动'A'

提前致谢。

3 个答案:

答案 0 :(得分:1)

尝试onResume()

按下后退活动B.

@Override
public void onBackPressed() {
    super.onBackPressed();
    finish
}

活动A的简历

  @Override 
  public void onResume() {
    super.onResume();
      booleanValue_one = sharedPreferences.getBoolean("LISTVIEW_EVENT_ONE", false);
      booleanValue_two = sharedPreferences.getBoolean("LISTVIEW_EVENT_TWO", false); 
      Log.e("", "booleanValue_one=" + booleanValue_one + " booleanValue_two=" + booleanValue_two + " booleanValue_three = " + booleanValue_three);
  }

答案 1 :(得分:0)

从活动中调用活动b时,使用startActivityForResult()

执行此操作
startActivityForResult(pickContactIntent, ANY_REQUEST_CODE);

在活动A中重写此方法

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == ANY_REQUEST_CODE) {
        if (resultCode == RESULT_OK) {
            // Do whatever you want. This will be a kind of callback you will get in Activity A whenever your activity B is closed
        }
    }
}

在活动B的onBackPress()中

Intent returnIntent = new Intent();
returnIntent.putExtra("result",result);
setResult(Activity.RESULT_OK,returnIntent);
finish();

如果要将任何数据发送回活动A,您可以将这些值放在returnIntent中,稍后放在活动A中,您可以通过意图检索它们。

答案 2 :(得分:0)

将您的代码放入OnResume中的Activity' A' b' z当您从活动B'按回来时它将再次打电话。活动' A'要再次恢复。 来自活动' B'只是完成活动所以活动' A'再也不会创造。

private void openActivityB(){
    // open activity code in activity 'A'
}

@Override
public void onBackPressed() {
    // in Activity 'B'
    finish();
}

希望它会有所帮助。