Android material AutoCompleteTextView 上的微调器 NullPointerException
Android material spinner NullPointerException on AutoCompleteTextView
旋转屏幕时出现 android spinner NullPointerException
嗨!伙计们,我在旋转屏幕时遇到了旋转器抛出 nullPointerExpression 的问题
<com.weiwangcn.betterspinner.library.material.MaterialBetterSpinner
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/department_spinner"
android:hint="@string/select_department"
android:gravity="center"
android:drawableEnd="@drawable/spinner_icon"
android:textColorHighlight="@color/colorButton"
android:textColor="@color/colorButton"
android:theme="@style/AppTheme"
app:met_floatingLabel="highlight"
android:layout_marginStart="25dp"
android:layout_marginEnd="25dp"
android:layout_marginTop="5dp"/>
在我的 onCreateView 里面
//MaterialBetterSpinner code goes from here
this.materialDesignSpinner = (MaterialBetterSpinner) findViewById(R.id.department_spinner);
materialDesignSpinner.setHintTextColor(Color.parseColor("#00BE84"));
materialDesignSpinner.setTextColor(Color.parseColor("#00BE84"));
materialDesignSpinner.setTextSize(17);
materialDesignSpinner.setHighlightColor(Color.parseColor("#00BE84"));
materialDesignSpinner.setUnderlineColor(Color.parseColor("#00BE84"));
callDepartment= service.getAllOpdIpdDepartments();
ArrayAdapter<String> departmentAdapter = new ArrayAdapter<>(OpdIpdAnalysis.this, android.R.layout.simple_dropdown_item_1line, new ArrayList<String>());
materialDesignSpinner.setAdapter(departmentAdapter);
callDepartment.enqueue(new Callback<List<OpdIpdDepartmentModel>>() {
@Override
public void onResponse(Call<List<OpdIpdDepartmentModel>> call, Response<List<OpdIpdDepartmentModel>> response) {
departmentLists = response.body();
if (departmentLists != null){
for (int i = 0; i<departmentLists.size(); i++){
spinnerLists.add(departmentLists.get(i).getName());
}
}
ArrayAdapter<String> adapter = (ArrayAdapter<String>) materialDesignSpinner.getAdapter();
adapter.clear();
adapter.addAll(spinnerLists);
adapter.notifyDataSetChanged();
}
这里是logcat:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.ritecare, PID: 15345
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Filter.filter(java.lang.CharSequence,
android.widget.Filter$FilterListener)' on a null object reference
at android.widget.AutoCompleteTextView.performFiltering(AutoCompleteTextView.java:1026)
at com.weiwangcn.betterspinner.library.material.MaterialBetterSpinner.onFocusChanged(MaterialBetterSpinner.java:49)
at android.view.View.handleFocusGainInternal(View.java:7478)
at android.view.View.requestFocusNoSearch(View.java:12441)
at android.view.View.requestFocus(View.java:12415)
at android.view.View.requestFocus(View.java:12382)
at android.view.View.requestFocus(View.java:12324)
at com.android.internal.policy.PhoneWindow.restoreHierarchyState(PhoneWindow.java:2166)
at android.app.Activity.onRestoreInstanceState(Activity.java:1563)
at android.app.Activity.performRestoreInstanceState(Activity.java:1518)
at android.app.Instrumentation.callActivityOnRestoreInstanceState(Instrumentation.java:1346)
at android.app.ActivityThread.handleStartActivity(ActivityThread.java:3310)
at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:221)
at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:201)
at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:173)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7356)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
尝试在 MaterialBetterSpinner 的初始化过程中添加:
ArrayAdapter<String> departmentAdapter = new ArrayAdapter<>(OpdIpdAnalysis.this, android.R.layout.simple_dropdown_item_1line, new ArrayList<String>());
materialDesignSpinner.setAdapter(departmentAdapter);
并在 onResponse 内:
ArrayAdapter<String> adapter = (ArrayAdapter<String>) materialDesignSpinner.getAdapter();
adapter.clear()
adapter.addAll(spinnerLists)
adapter.notifyDataSetChanged()
我找到了更好的 material 微调器库
我们应该使用 ganfra/MaterialSpinner 库
简单更健壮
这里是link:
旋转屏幕时出现 android spinner NullPointerException
嗨!伙计们,我在旋转屏幕时遇到了旋转器抛出 nullPointerExpression 的问题
<com.weiwangcn.betterspinner.library.material.MaterialBetterSpinner
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/department_spinner"
android:hint="@string/select_department"
android:gravity="center"
android:drawableEnd="@drawable/spinner_icon"
android:textColorHighlight="@color/colorButton"
android:textColor="@color/colorButton"
android:theme="@style/AppTheme"
app:met_floatingLabel="highlight"
android:layout_marginStart="25dp"
android:layout_marginEnd="25dp"
android:layout_marginTop="5dp"/>
在我的 onCreateView 里面
//MaterialBetterSpinner code goes from here
this.materialDesignSpinner = (MaterialBetterSpinner) findViewById(R.id.department_spinner);
materialDesignSpinner.setHintTextColor(Color.parseColor("#00BE84"));
materialDesignSpinner.setTextColor(Color.parseColor("#00BE84"));
materialDesignSpinner.setTextSize(17);
materialDesignSpinner.setHighlightColor(Color.parseColor("#00BE84"));
materialDesignSpinner.setUnderlineColor(Color.parseColor("#00BE84"));
callDepartment= service.getAllOpdIpdDepartments();
ArrayAdapter<String> departmentAdapter = new ArrayAdapter<>(OpdIpdAnalysis.this, android.R.layout.simple_dropdown_item_1line, new ArrayList<String>());
materialDesignSpinner.setAdapter(departmentAdapter);
callDepartment.enqueue(new Callback<List<OpdIpdDepartmentModel>>() {
@Override
public void onResponse(Call<List<OpdIpdDepartmentModel>> call, Response<List<OpdIpdDepartmentModel>> response) {
departmentLists = response.body();
if (departmentLists != null){
for (int i = 0; i<departmentLists.size(); i++){
spinnerLists.add(departmentLists.get(i).getName());
}
}
ArrayAdapter<String> adapter = (ArrayAdapter<String>) materialDesignSpinner.getAdapter();
adapter.clear();
adapter.addAll(spinnerLists);
adapter.notifyDataSetChanged();
}
这里是logcat:
E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.ritecare, PID: 15345 java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Filter.filter(java.lang.CharSequence, android.widget.Filter$FilterListener)' on a null object reference at android.widget.AutoCompleteTextView.performFiltering(AutoCompleteTextView.java:1026) at com.weiwangcn.betterspinner.library.material.MaterialBetterSpinner.onFocusChanged(MaterialBetterSpinner.java:49) at android.view.View.handleFocusGainInternal(View.java:7478) at android.view.View.requestFocusNoSearch(View.java:12441) at android.view.View.requestFocus(View.java:12415) at android.view.View.requestFocus(View.java:12382) at android.view.View.requestFocus(View.java:12324) at com.android.internal.policy.PhoneWindow.restoreHierarchyState(PhoneWindow.java:2166) at android.app.Activity.onRestoreInstanceState(Activity.java:1563) at android.app.Activity.performRestoreInstanceState(Activity.java:1518) at android.app.Instrumentation.callActivityOnRestoreInstanceState(Instrumentation.java:1346) at android.app.ActivityThread.handleStartActivity(ActivityThread.java:3310) at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:221) at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:201) at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:173) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016) at android.os.Handler.dispatchMessage(Handler.java:107) at android.os.Looper.loop(Looper.java:214) at android.app.ActivityThread.main(ActivityThread.java:7356) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
尝试在 MaterialBetterSpinner 的初始化过程中添加:
ArrayAdapter<String> departmentAdapter = new ArrayAdapter<>(OpdIpdAnalysis.this, android.R.layout.simple_dropdown_item_1line, new ArrayList<String>());
materialDesignSpinner.setAdapter(departmentAdapter);
并在 onResponse 内:
ArrayAdapter<String> adapter = (ArrayAdapter<String>) materialDesignSpinner.getAdapter();
adapter.clear()
adapter.addAll(spinnerLists)
adapter.notifyDataSetChanged()
我找到了更好的 material 微调器库
我们应该使用 ganfra/MaterialSpinner 库
简单更健壮
这里是link: