Java 生成随机整数并将其保存到SharedReferences
当我的应用程序第一次运行时,我需要生成随机整数以给出设备id,然后将其保存到SharedPrefs,在TextView上显示id,当再次打开时,在TextView上显示SharedPrefs中保存的idJava 生成随机整数并将其保存到SharedReferences,java,android,sharedpreferences,Java,Android,Sharedpreferences,当我的应用程序第一次运行时,我需要生成随机整数以给出设备id,然后将其保存到SharedPrefs,在TextView上显示id,当再次打开时,在TextView上显示SharedPrefs中保存的id public class MainActivity extends AppCompatActivity { public static final String MyPREFERENCES = "MyPrefs"; public static final String KEY_
public class MainActivity extends AppCompatActivity {
public static final String MyPREFERENCES = "MyPrefs";
public static final String KEY_DEVICE = "id";
SharedPreferences sharedpreferences;
String id;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
deviceid = (TextView) findViewById(R.id.deviceid);
sharedpreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);
if (!sharedpreferences.contains(id)) {
SharedPreferences.Editor editor = sharedpreferences.edit();
id = String.valueOf(new Random().nextInt(900000) + 100000);
editor.putString(KEY_DEVICE, id);
editor.commit();
deviceid.setText(id);
}
deviceid.setText(id);
}
}
上面的代码生成随机整数并在TexView上显示,但每次我隐藏或关闭应用程序时,设备id都会改变
你能解释一下我要做什么来实现我的目标吗 应该有“id”
或按键设备
替换
!sharedpreferences.contains(id)
到
也
在这种情况下,将显示null
因此,您必须在setText之前添加
id = sharedpreferences.getString(KEY_DEVICE,"0");
这是因为您只需检查是否没有共享首选项值,然后选择一个随机数并将其添加到设备中,但在创建方法中未获得任何值,即未获得之前存储的任何共享首选项值。只需获取存储的值,然后检查该值是否存在,如果存在,则在textview中设置,否则调用条件检查。希望它有助于在从SharedReferences获取值之前检查null。 如果为空:则保存id
否则:只取旧的 如果此检查:如果需要(!SharedReferences.contains(id))则将其嵌套在空检查下。尝试此操作
String MyPREFERENCES = "MyPrefs";
String KEY_DEVICE = "device_id";
SharedPreferences sharedpreferences;
SharedPreferences.Editor editor;
sharedpreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);
if (sharedpreferences.contains(KEY_DEVICE)) {
id = sharedpreferences.getString(KEY_DEVICE, "0");
deviceid.setText(id);
} else {
id = String.valueOf(new Random().nextInt(900000) + 100000);
editor = sharedpreferences.edit();
editor.putString(KEY_DEVICE, id);
editor.apply();
deviceid.setText(id);
}
包含
第一个参数是键,而不是值。您的钥匙是key\u设备
,为什么要通过id
进行检查?请转到链接,了解如何获取SharedReferences值。。
id = sharedpreferences.getString(KEY_DEVICE,"0");
String MyPREFERENCES = "MyPrefs";
String KEY_DEVICE = "device_id";
SharedPreferences sharedpreferences;
SharedPreferences.Editor editor;
sharedpreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);
if (sharedpreferences.contains(KEY_DEVICE)) {
id = sharedpreferences.getString(KEY_DEVICE, "0");
deviceid.setText(id);
} else {
id = String.valueOf(new Random().nextInt(900000) + 100000);
editor = sharedpreferences.edit();
editor.putString(KEY_DEVICE, id);
editor.apply();
deviceid.setText(id);
}