如何在另一个活动中更改活动的布尔值或其他变量值?

时间:2015-08-10 22:38:57

标签: android android-activity boolean boolean-logic

所以我在Activity A中有一个设置为false的布尔值。然后,在另一个活动中,我想将该值更改为true。然后,当我按下后退按钮回到活动A时,该布尔值现在为真,并且它在onCreate中运行。

这就是我的意思,活动A

private static boolean newCardcheck = false;

 @Override
protected void onCreate(Bundle savedInstanceState)
{ 

}


public static void setNewCardcheck() {
    newCardcheck = true;
}


@Override
public void onResume() {
    super.onResume();
   if(newCardcheck)
    {
        Toast.makeText(this,"hey everyone",Toast.LENGTH_SHORT).show();
    }
    else
    {
        alfunction();
        sendCards(storeCards);
    }

}


@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
    if(requestCode == RESULT_LOAD_IMAGE)
    {
        newCardcheck = true;
    }
}

活动B:

@Override
public void onBackPressed()
{
    MyActivity.setNewCardcheck();
    super.onBackPressed();
    setResult(Activity.RESULT_OK, getIntent());
    finish();
}

所以当我按下时,我希望newCardcheck为真,并运行“if”语句而不是else语句。

希望你们能帮忙。

感谢。

我还尝试将setNewCard()方法置于onClick中,但它也无效。

1 个答案:

答案 0 :(得分:2)

执行此操作的最佳方法是通过SharedPreferences。 SharedPreferences会将您的数据写入应用程序apk中的键/值中的私有文件,即使您关闭设备也会持续存在。

您可以像这样初始化onCreate中的SharedPreferences:SharedPreferences sharedPreferences = getSharedPreferences(getPackageName(),MODE_PRIVATE)。

要存储一个值,只需调用:sharedPreferences.edit()。putString(“myKey”,stringValue).commit();

要从应用程序中的任何位置检索该值,请初始化SharedPreferences,然后使用以下代码:String myData = sharedPreferences.getString(“myKey”);

如果有帮助,请告诉我!

编辑:您可能还想查看从您的Intent获取结果。见Getting a Result from an Activity。如果你需要boolean持久化(即:写入存储并在重启时可用),请使用SharedPreferences,否则你可能想尝试onActivityResult。

编辑2:

尝试覆盖活动A中的onActivityResult,如下所示:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

        if (resultCode == RESULT_OK) {
            myBoolean = true;
        }
}

然后在活动B中尝试

setResult(Activity.RESULT_OK, getIntent()); finish();

这是将数据传入和传出活动的标准方法。查看上面的链接,了解如何从活动中获得更深入的结果。