我试图使用像UserKeyID这样的应用程序制作应用程序,这是在第一次应用程序启动时生成的随机数,应该使用SharedPreferences保存在手机内存中。一切正常,直到SharedPrefs中保存了数字,因为它没有发生。我知道手机正在生成数字,它甚至使用我想在SharedPrefs中保存的相同变量将其发送到我的数据库。
我的代码看起来像那个
SplashScreen(生成数字的位置,发送到数据库并应保存在SPref中):
@Override
protected void onCreate(Bundle savedInstanceState) { ...
context = getApplicationContext();
sharedPref = context.getSharedPreferences("my_prefs", Context.MODE_PRIVATE);
if (sharedPref.getBoolean("firstrun", true)) {
new GetAllUsers().execute();
}
<...> AsyncTask
do {
KeyID = rand.nextInt(999999 - 99999) + 99999;
Log.d("KeyID : ", KeyID + "");
isUnique = true;
for(int i = 0; i < Ids.length; i++) {
if((KeyID + "").contains(Ids[i]))
isUnique = false;
}
} while(isUnique == false);
return null;
}
protected void onPostExecute(String file_url) {
sharedPref.edit().putString("KeyID", KeyID + "").commit();
new AddNewUser().execute();
sharedPref.edit().putBoolean("firstrun", false).commit();
Intent i = new Intent(SplashScreen.this, FragmentsActivity.class);
startActivity(i);
finish();
}
就像我说的那样,数字KeyID会按原样发送到数据库,但我无法从其他活动中访问它:
sharedPref = SplashScreen.context.getSharedPreferences("my_prefs", Context.MODE_PRIVATE);
if(commentUsers[position].equals(sharedPref.getString("UserKeyID", "")) != true) {
deleteComment.setVisibility(View.GONE);
}
答案 0 :(得分:3)
那是因为你使用了2个不同的键。保存在:
"UserKeyID"
并使用
进行检索public static final KEY_USER_ID = "user_id";
这就是为什么常量应该用于键的确切原因,例如。
sharedPref.edit().putString(KEY_USER_ID, KeyID + "").commit();
然后,而不是硬编码字符串,只需使用常量。在你的情况下拼错/使用错误的密钥等时,你永远不会遇到这种情况:
if(commentUsers[position].equals(sharedPref.getString(KEY_USER_ID, "")) != true) {
deleteComment.setVisibility(View.GONE);
}
以后:
PHP