Android 共享引用不';好像不行
这是我的Android 共享引用不';好像不行,android,Android,这是我的联系人活动(我的主要活动): 这是我的登录活动: public class Contacts extends Delegate { private static final String TAG = "Contacts"; public View listContactsView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(
联系人
活动(我的主要活动):
这是我的登录活动:
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("");
}
...
...
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!");
}
}
当我登录时,它会提交SharedReferences
,但当我关闭应用程序并重新打开时,字符串变为null
,我的OnCreate
打算再次登录
是不是我错过了什么
为了避免疑问,我的学员
课程:
public class Delegate extends ActionBarActivity {
protected InEventAPI api;
public Delegate() {}
public void personSignInDelegate(HttpResponse response, JSONObject result) {};
}
使用getPreferences()
时最有可能出现问题。从:
检索一个SharedReferences对象,以访问以下首选项:
这项活动是私人的。这就是所谓的底层
通过传入此活动的
类名称作为首选项名称
尽管这两个类都扩展了委托
类,但它们都是具有唯一名称的唯一类。这意味着Contacts
中的getPreferences()
返回的SharedReferenceObject与SignIn
不同
使用getSharedReferences(字符串,int)
如。
而不是
getPreferences(MODE_PRIVATE);
换成
getSharedPreferences ("OneSharedPreference", MODE_PRIVATE);
或者重写Delegate
中的getPreferences()
,以便使用唯一名称调用getSharedReferences()
或者,如果您没有对任何内容使用默认的SharedReferences(这通常由任何首选项活动
类使用),则始终可以调用
并传入一个Context
实例。哪种方法更好?在您的情况下,我会使用覆盖,因为Delegate
是这两个活动的父类。