所以我在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中,但它也无效。
答案 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();
这是将数据传入和传出活动的标准方法。查看上面的链接,了解如何从活动中获得更深入的结果。