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
是这两个活动的父类。