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:)希望这就是你要搜索的,如果不是,请告诉我!