gpt4 book ai didi

android - 使用共享首选项存储 int 值

转载 作者:行者123 更新时间:2023-11-29 14:38:57 26 4
gpt4 key购买 nike

我有一个 int “flag” 变量,它有两个可能的 int 值,0 和 1。

此处应用的主题是:询问用户是或否?

如果用户选择 YES,则分配 int=1。else 如果选择否,则赋值 int=0;

我正在使用:

public static int flag;


@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.flag0:
flag=0;
System.err.println("Flag : " + flag);
break;
case R.id.flag1:
flag=1;
System.err.println("Flag : " + flag);
break;
default:
break;
}
}

我的问题在这里:没关系,将首选项保存到我的应用程序在前台或后台运行。

一旦我们关闭/终止应用程序,所有存储的首选项都会被清除,即设置为默认值零。

因为我刚开始研究 STORAGE Options,所以我只是尝试实现 SHARED PREFERENCES,它仍然有同样的上述问题。我使用共享首选项存储 int 值的方法是;

编辑:我刚刚尝试了以下答案,但没有成功,这是我发布的全部代码,将有助于您测试(可能)

xml文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >

<TextView
android:id="@+id/text"
android:textSize="30sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />

<Button android:id="@+id/flag0"
android:layout_marginTop="10dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/text"
android:text="set to 0"/>

<Button android:id="@+id/flag1"
android:layout_marginTop="10dp"
android:layout_below="@+id/text"
android:layout_toRightOf="@+id/flag0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="set to 1"/>

<Button android:id="@+id/test0"
android:layout_marginTop="10dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/flag1"
android:text="Test for 0"/>

主要 Activity :

public class MainActivity extends Activity implements OnClickListener {
TextView textView;
Button bt1,bt2,testbt1;
public static int flag;
SharedPreferences pref;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = (TextView) findViewById(R.id.text);
bt1 = (Button) findViewById(R.id.flag0);
bt2 = (Button) findViewById(R.id.flag1);
testbt1 = (Button) findViewById(R.id.test0);

bt1.setOnClickListener(this);
bt2.setOnClickListener(this);
testbt1.setOnClickListener(this);


pref=getSharedPreferences("Sai", MODE_PRIVATE);
pref.getInt("lang_us", 0);
System.err.println("Flag Value in Main method : " + flag);
}
public void saveFlag(){

pref=getSharedPreferences("Sai",MODE_PRIVATE);
Editor editor = pref.edit();
editor.putInt("lang_us", flag);
editor.commit();

}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.flag0:
flag=0;
saveFlag();
System.err.println("Flag : " + flag);
break;
case R.id.flag1:
flag=1;
saveFlag();
System.err.println("Flag : " + flag);
break;
case R.id.test0:
System.err.println("Flag : " + flag);
if (flag == 0) {
textView.setText("flag is zero");
} else {
textView.setText("flag is not zero");
}

break;

default:
break;
}
}

哪里出错了?

最佳答案

你的做法不对

1.> 使用 Mode_PRIVATE(当您希望您的共享首选项文件只能由您的应用程序访问时使用)而不是 MODE_WORLD_WRITABLE(当您希望您的共享首选项文件只能在您的应用程序外部访问时使用)

2.> 写一个方法来保存标志的状态

public void saveFlag(){

pref=getSharedPreferences("Sai",Context.MODE_PRIVATE);
Editor editor = pref.edit();
editor.putInt("lang_us", flag);
editor.commit();

}

3.> 每当你改变标志时调用这个方法

     @Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.flag0:
flag=0;
saveFlag();
System.err.println("Flag : " + flag);
break;
case R.id.flag1:
flag=1;
saveFlag();
System.err.println("Flag : " + flag);
break;
default:
break;
}

4.> 然后在你的 onCreate() 方法中你应该获取这个值。

pref=getSharedPreferences("Sai",Context.MODE_PRIVATE);
flag = prefs.getInt("lang_us", 0);

关于android - 使用共享首选项存储 int 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18757299/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com