自定义会话另一个类

时间:2014-03-11 23:29:10

标签: android session exception sharedpreferences stack-overflow

我尝试进行自定义会话,但我遇到了正常问题,但我没有看到错误:

在我的班级主要:

session.getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);

同样在我的班级课程中有:

public SharedPreferences getSharedPreferences(String mypreferences2, int modePrivate){
    sharedpreferences = getSharedPreferences(mypreferences2,
            modePrivate);
    return this.sharedpreferences;
}

我明白了,为什么?

03-12 00:22:09.104: E/AndroidRuntime(7595): FATAL EXCEPTION: main
03-12 00:22:09.104: E/AndroidRuntime(7595): java.lang.StackOverflowError
03-12 00:22:09.104: E/AndroidRuntime(7595):     at com.example.support.Session.getSharedPreferences(Session.java:41)
03-12 00:22:09.104: E/AndroidRuntime(7595):     at com.example.support.Session.getSharedPreferences(Session.java:41)
03-12 00:22:09.104: E/AndroidRuntime(7595):     at com.example.support.Session.getSharedPreferences(Session.java:41)
03-12 00:22:09.104: E/AndroidRuntime(7595):     at com.example.support.Session.getSharedPreferences(Session.java:41)

1 个答案:

答案 0 :(得分:1)

您获得StackOverflowError的原因是因为您的方法无限制地以递归方式调用自己。如果您的班级MainActivity的子类,则只需要致电:

this.getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);

如果确实需要来自另一个类的共享首选项中的信息,建议您在Activity中检索它,然后通过构造函数,公共方法等将信息传递给类。