1

我真的不需要代码,只需要这样做的结构。

我正在开发一个应用程序,其中我有一个带有许多方法和一个内部类 User 的 BaseAtivity(扩展 Activity)。我的应用程序中的所有其他活动都扩展了 BaseAtivity。

User 类具有使用 SharedPreferences 读取和写入数据的方法。因此,LoginActivity 扩展了 BaseActivity,并且在正确登录后,它调用 User.login(args) 以创建具有用户 ID、用户电子邮件和具有用户偏好的 json 的共享变量(在 MODE_PRIVATE 中)。

我需要创建一个内容提供程序,它将使用 query() 从登录的用户中检索数据。内容提供者将从 sharedpreferences 中获取数据并将它们提供给调用内容提供者的应用程序。

由于我的内容提供者扩展了 ContentProvider 我无法扩展 BaseActivity (这可能是一个解决方案)。在 ContentProvider 的方法 onCreate() 中调用时

User user = new BaseActivity.User();

我收到错误....“'com.example.myapp.BaseActivity' 不是封闭类”。

有没有办法从我的 ContentProvider 调用内部类 User?

4

2 回答 2

1

好的,我解决了这样的问题。我没有找到使用 User 内部类但访问 SharedPreferences 的方法。

public class UserProfileProvider extends ContentProvider implements SharedPreferences {


    @Override
    public boolean onCreate() {
        SharedPreferences settings = getContext().getSharedPreferences(getContext().getResources().getString(R.string.PREFS_NAME), getContext().MODE_PRIVATE);
        Log.d("akis", ":::userProfileProvider:::" + settings.getString(getContext().getResources().getString(R.string.USER_PREFERENCES), "default"));
        return false;
    }

当然,您必须添加所有必须通过实现 SharedPreferences 覆盖的方法

于 2013-09-04T11:11:18.990 回答
1

如果你只需SharedPreferences要从 a访问ContentProvider,你甚至不需要你ContentProvider的实现SharedPreferences,因为getSharedPreferences()它是上下文的方法,可以从类的getContext()方法中获得ContentProvider

于 2014-11-21T11:16:18.060 回答