Java 我需要设置一个全局变量的值,甚至在重新启动应用程序时也要保存它

Java 我需要设置一个全局变量的值,甚至在重新启动应用程序时也要保存它,java,android,Java,Android,因此,我正在开发一个应用程序中的一个功能,其中我将布尔值设置为true,这将导致执行一些操作。现在,onClick按钮将执行一些相关任务,并将布尔值设置为false。这很好,而且效果很好,但是一旦它被更改为false,我希望在重新启动应用程序时,它被指定为false,而不是true。我已经找了好一阵子,但运气不好。我们将不胜感激 我学习Java和Android应用程序开发才2个月,现在我正在制作程序,请耐心等待。也许用布尔值代替布尔值?不过我还没走多远 public class Constant

因此,我正在开发一个应用程序中的一个功能,其中我将布尔值设置为
true
,这将导致执行一些操作。现在,
onClick
按钮将执行一些相关任务,并将布尔值设置为
false
。这很好,而且效果很好,但是一旦它被更改为
false
,我希望在重新启动应用程序时,它被指定为
false
,而不是true。我已经找了好一阵子,但运气不好。我们将不胜感激

我学习Java和Android应用程序开发才2个月,现在我正在制作程序,请耐心等待。也许用布尔值代替布尔值?不过我还没走多远

public class Constants {
  public static boolean VARIABLE = true;
}

public Fragment {
  mSharedPreferencesManager.setFeatureUpdateCheck(Constants.VARIABLE);

  if(mSharedPreferencesManager.getFeatureUpdateCheck())
    chatUpdateNotif.setVisibility(View.VISIBLE);                   
  else
    chatUpdateNotif.setVisibility(View.GONE);


更改布尔值时,请使用“共享首选项”保存该布尔值,如下所示:

Context context = getActivity();
SharedPreferences sharedPref = context.getSharedPreferences(
        "DataSaved", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putBoolean("VARIABLE", VARIABLE);
editor.commit();
然后写下:

Context context = getActivity();
SharedPreferences sharedPref = context.getSharedPreferences(
        "DataSaved", Context.MODE_PRIVATE);
VARIABLE = sharedPref.getBoolean("VARIABLE", false);
这将设置布尔值:

  SharedPreferences.Editor editor = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE).edit();
    editor.putBoolean("Value", false);
    editor.commit();
SharedPreferences prefs = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE);
TextView textview = (TextView)findViewById(R.id.textview);
textview.setText(String.valueOf(prefs.getBoolean("Value", true)));
这将获得布尔值:

  SharedPreferences.Editor editor = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE).edit();
    editor.putBoolean("Value", false);
    editor.commit();
SharedPreferences prefs = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE);
TextView textview = (TextView)findViewById(R.id.textview);
textview.setText(String.valueOf(prefs.getBoolean("Value", true)));

此textview将打印为false,因为已设置布尔值。如果未设置布尔值,则为true(默认值)

您的问题非常不清楚。如果您试图在关闭应用程序时保存一个值,并在重新启动时获取该值,请尝试使用共享首选项

1.单击按钮保存值

SharedPreferences sharedPref = getSharedPreferences("YOUR PREF NAME", Context.MODE_PRIVATE);
sharedPref.edit().putBoolean("VALUE NAME", true).apply();
2.从restring应用程序上的首选项还原值

sharedPref.getBoolean("VALUE NAME", null);
编辑:如果您没有使用活动,请使用上下文来使用首选项

SharedPreferences sharedPref = context.getSharedPreferences("YOUR PREF NAME", Context.MODE_PRIVATE);


与其将其硬编码为true,不如从属性文件中读入它。我还建议更改类名:常量不合适,可能不清楚,因为它不是“关于如何存储设置的文档的真正的常量:@L3g3nj使用共享首选项存储应用程序的状态从这里获取更多详细信息@Stultuske类常量实际上有许多不同的变量已编写为用于不同的活动。。所以为了把我自己的变量放在容易编辑的地方,我把它放在Constants类中。它是可编辑的这一事实意味着它应该在另一个类中。为什么不添加一个类“Properties”?我认为最后一行应该是
VARIABLE=sharedPref.getBoolean(“VARIABLE”,true)它是默认值,我认为如果该值不是由他设置的,那么它应该是错误的查看他的代码。最初变量为true,但单击后变为false,并存储变量。当您使用false作为默认值时,变量将永远不会为true。可能是复制粘贴错误或其他什么,为他编辑了它。哦,很抱歉,这是错误。我从我的项目代码中复制了这一行。哈哈,是的,现在当我想到它时,问题不清楚,因为我自己不清楚。如果我想实际编辑的值,当然我应该使用SharedReferences,因为它有编辑器来做这件事。。这并没有在我的脑海中出现。哈哈,好吧..我想你的问题现在已经解决了。使用SharedReferences作为singleton类,你可以在整个应用程序中有效地使用它:)我不认为
null
是布尔值的有效默认值,在这种特定情况下肯定不是正确的默认值。在共享首选项中,如果设置了null,您希望为null,否则您将获取共享首选项中的任何内容,null将正常工作,因为它仅在未设置任何值时才为null。oolean是值类型,因此
null
不是布尔值的有效值。这甚至不会编译。boolean没有,但boolean的值状态为null。我记得昨天读过类似的文章。我刚刚编辑了答案L3G3NDj:)希望这就是你要搜索的,如果不是,请告诉我!