- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
这是我制作的应用程序类的代码,我用它来保留领域数据库的默认配置,并保留 2 个静态方法来处理 SharedPreferences
,其中一个我得到 NullPointerException
public class BucketDropsApp extends Application {
@Override
public void onCreate() {
super.onCreate();
RealmConfiguration config=new RealmConfiguration.Builder(this).build();
Realm.setDefaultConfiguration(config);
}
public static void save(Context context,int state){
SharedPreferences mPrefs= PreferenceManager.getDefaultSharedPreferences(context);
SharedPreferences.Editor mEditor=mPrefs.edit();
mEditor.putInt("State",state);
mEditor.apply();
}
public static int load(Context context){
SharedPreferences mPrefs= PreferenceManager.getDefaultSharedPreferences(context);
int stateType=mPrefs.getInt("State", StateType.NONE);
return stateType;
}
}
这是 MainActivity 的类:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mToolbar = (Toolbar) findViewById(R.id.main_toolBar);
setSupportActionBar(mToolbar);
mBtnAdd = (Button) findViewById(R.id.btn_trigger_dialog);
mBtnAdd.setOnClickListener(mBtnAddListener);
mRealm = Realm.getDefaultInstance();
int filterOption = BucketDropsApp.load(this);
loadResults(filterOption);
mEmptyView = findViewById(R.id.emptyScreen);
mRecycler = (BucketDropRecycler) findViewById(R.id.rv_drops);
mRecycler.addItemDecoration(new Divider(this, LinearLayoutManager.VERTICAL));
mRecycler.hideIfEmpty(mToolbar);
mRecycler.showIfEmpty(mEmptyView);
mAdapter = new DropsAdapter(this, mResults, mAddListener, mMarkListener,mRealm);
mRecycler.setAdapter(mAdapter);
CustomCallback callback = new CustomCallback(mAdapter);
ItemTouchHelper helper = new ItemTouchHelper(callback);
helper.attachToRecyclerView(mRecycler);
initBackgroundImage();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
boolean handled = true;
int filterOption = StateType.NONE;
switch (id) {
case R.id.menu_add:
showDialogAdd();
break;
case R.id.menu_least:
filterOption = StateType.LEAST_TIME_LEFT;
break;
case R.id.menu_most:
filterOption = StateType.MOST_TIME_LEFT;
break;
case R.id.menu_complete:
filterOption = StateType.COMPLETE;
break;
case R.id.menu_incomplete:
filterOption = StateType.INCOMPLETE;
break;
default:
handled = false;
break;
}
loadResults(filterOption);
BucketDropsApp.save(this, filterOption);
return handled;
}
private void loadResults(int filterOption) {
switch (filterOption) {
case StateType.NONE:
mResults = mRealm.where(Drop.class).findAllAsync();
break;
case StateType.LEAST_TIME_LEFT:
mResults = mRealm.where(Drop.class).findAllSortedAsync("when");
break;
case StateType.MOST_TIME_LEFT:
mResults = mRealm.where(Drop.class).findAllSortedAsync("when", Sort.DESCENDING);
break;
case StateType.COMPLETE:
mResults = mRealm.where(Drop.class).equalTo("completed", true).findAllAsync();
break;
case StateType.INCOMPLETE:
mResults = mRealm.where(Drop.class).equalTo("completed", false).findAllAsync();
break;
}
mResults.addChangeListener(mChangeListener);
}
这就是当我尝试运行应用程序时 logcat 中弹出的内容
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.compassasu.bucketdrops/com.compassasu.bucketdrops.ActivityMain}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
at android.app.ActivityThread.access$800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at android.preference.PreferenceManager.getDefaultSharedPreferencesName(PreferenceManager.java:374)
at android.preference.PreferenceManager.getDefaultSharedPreferences(PreferenceManager.java:369)
at com.compassasu.bucketdrops.BucketDropsApp.load(BucketDropsApp.java:33)
at com.compassasu.bucketdrops.Recycler.DropsAdapter.update(DropsAdapter.java:64)
at com.compassasu.bucketdrops.Recycler.DropsAdapter.<init>(DropsAdapter.java:51)
at com.compassasu.bucketdrops.ActivityMain.onCreate(ActivityMain.java:105)
at android.app.Activity.performCreate(Activity.java:5231)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
at android.app.ActivityThread.access$800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
最佳答案
您的 Activity 是否扩展了 android.app.Application?如果是,那么您可以尝试按如下方式传递上下文,即代替此传递 getApplicationContext()
mAdapter = new DropsAdapter(getApplicationContext(), mResults, mAddListener, mMarkListener,mRealm);
可能需要引用以下链接:
Should I use getApplicationContext or Activity.this in a long running AsyncTask
关于java - PreferenceManager.getDefaultSharedPreferences 中的空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38206795/
我的代码是: final String eulaKey = "mykey"; final SharedPreferences prefs = PreferenceManager.getDefaultS
docs声明: Gets a SharedPreferences instance that points to the default file that is used by the prefer
我有一个 PreferenceActivity 来保存我所有的应用偏好设置。当我想在 Main Activity 中使用这些首选项时,我使用: prefScreen = PreferenceManag
我有两个服务(调用另一个服务的 DashClock 扩展服务),第二个服务应该保存一个值,以便我可以使用该值显示在我的 DashClock 扩展中。但是,此值似乎没有传递到扩展服务中。 DashClo
我一直在这一行收到 NullPointerException: SharedPreferences myPreference = PreferenceManager.getDefaultSharedP
据我所知,getDefaultSharedPreferences 正在将所有首选项文件加载到内存中。 在我的应用程序中,我有许多类,我在其中传递上下文并使用 getDefaultSharedPrefe
当我使用defaultsharedpreferences保存多个数据时,发现数据被覆盖了。我对发生的事情感到困惑。偏好的期望值 userId is 2 authorizedHeader is bhlr
鉴于传递给 PreferenceManager.getDefaultSharedPreferences 的任何非空上下文都将返回相同的结果,PreferenceManager 使用的上下文是什么?在不
是否有任何方法可以将 getDefaultSharedPreferences(Context) 检索到的首选项模式设置为 MODE_MULTI_PROCESS 以便它可以跨多个进程使用? 如果不是,是
这是我制作的应用程序类的代码,我用它来保留领域数据库的默认配置,并保留 2 个静态方法来处理 SharedPreferences,其中一个我得到 NullPointerException public
我正在根据开发人员指南创建一个 PreferenceFragment,但我在 中的 getDefaultSharedPreferences() 调用中得到了一个 NullPointerExceptio
我目前正在参加 Udacity 的“开发 Android 应用程序”类(class)。在“第 3 课:新 Activity 和 Intent > 使用 SharedPreferences”部分,讲师要
我正在尝试运行它,但是当它到达 getDefaultSharedPreferences() 时它崩溃了。为什么? 这是首选项 Activity 。它在被销毁时触发 IntentService impo
PreferenceManager.getDefaultSharedPreferences(context) 和 getPreferences() 似乎检索不同的首选项。 PreferenceMana
我只是好奇。有3种方法: 1. getPreferenceManager().setSharedPreferencesName(String PrefName); 2. PreferenceManag
getDefaultSharedPreferences 和 getSharedPreferences 在 Android 中有什么区别?谁能解释一下? 最佳答案 getDefaultSharedPre
我想从我的首选项 fragment 中获取一个字符串到我的 Android 应用程序中的一个类,但我无法像通常那样获取它。 我类(class)的代码: public class VtplListCon
这个问题已经有答案了: What is a NullPointerException, and how do I fix it? (12 个回答) 已关闭 6 年前。 我正在尝试创建一个对讲应用程序,
我有一个问题,我用谷歌搜索了一遍又一遍,但此时一切似乎都不合逻辑。我有一个 fragment ,它在主要 Activity 中发生某些事情时开始(我认为这不重要)。在我有这段代码的 fragment
当我最初编写和发布我的应用程序时,我使用自定义的书面 Activity 来处理应用程序设置。我使用自定义文件名来存储共享首选项,如下所示: getSharedPreferences("custom_s
我是一名优秀的程序员,十分优秀!