以下是我的Contacts
活动(我的主要活动):
public class Contacts extends Delegate {
private static final String TAG = "Contacts";
public View listContactsView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SharedPreferences prefs = getPreferences(MODE_PRIVATE);
String restoredText = prefs.getString("token", null);
if(restoredText == null)
{
Intent intent = new Intent(this, SignIn.class);
startActivity(intent);
}
setContentView(R.layout.activity_contacts);
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new ContactListFragment()).commit();
}
//new InEventAPI(this).execute("");
}
...
...
以下是我的SignIn
活动:
public SignIn extends Delegate {
...
...
public void personSignInDelegate(HttpResponse response, JSONObject result)
{
if(response != null && result != null)
{
switch(response.getStatusLine().getStatusCode())
{
case 200:
try {
SharedPreferences.Editor editor = getPreferences(MODE_PRIVATE).edit();
editor.putString("token", result.get("tokenID").toString());
editor.commit();
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
break;
case 401:
Toast.makeText(this, R.string.toastEmailPasswordIncorrect, Toast.LENGTH_LONG).show();
break;
}
}
else
{
Log.d(TAG, "Something went wrong!");
}
}
当我登录时,它会在SharedPreferences
上提交,但当我关闭我的应用并重新打开时,String
变为null
,我的OnCreate
意图{ {1}}再次。
我缺少什么?
为了避免疑惑,我的SignIn
班级:
Delegate
答案 0 :(得分:2)
问题最有可能是您使用getPreferences()
。来自documentation:
检索SharedPreferences对象以访问其中的首选项 私人参加此活动。这只是调用底层证券 通过传入此活动来获取getSharedPreferences(String,int)方法 类名作为首选项名称。
尽管两个类都扩展了Delegate
类,但它们都是具有唯一名称的唯一类。这意味着getPreferences()
中的Contacts
会返回与SignIn
相比不同的SharedPreferenceObject。
使用getSharedPreferences(String, int)
例如。
而不是
getPreferences(MODE_PRIVATE);
将其更改为
getSharedPreferences ("OneSharedPreference", MODE_PRIVATE);
或覆盖getPreferences()
中的Delegate
,以便使用唯一名称调用getSharedPreferences()
。
或者,如果您没有使用任何默认的SharedPreferences(这通常由任何PreferenceActivity
类使用),您可以随时调用
PreferenceManager.getDefaultSharedPreferences()
并传入Context
个实例。