SimpleAdapter вылетает каждую секунду при запуске

У меня есть SimpleAdapter с фильтрацией inputSearch и интерактивными элементами (которые я получаю из базы данных MySQL).

Иногда, когда я обедаю в своем проекте, возникает ошибка:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.brzozowski.marcin.inzynierka/com.brzozowski.marcin.inzynierka.activities.ChooseGroupActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.widget.Filter android.widget.SimpleAdapter.getFilter()' on a null object reference
                  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325)
                  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
                  at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3947)
                  at android.app.ActivityThread.access$900(ActivityThread.java:151)
                  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1309)
                  at android.os.Handler.dispatchMessage(Handler.java:102)
                  at android.os.Looper.loop(Looper.java:135)
                  at android.app.ActivityThread.main(ActivityThread.java:5254)
                  at java.lang.reflect.Method.invoke(Native Method)
                  at java.lang.reflect.Method.invoke(Method.java:372)
                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
               Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.widget.Filter android.widget.SimpleAdapter.getFilter()' on a null object reference
                  at com.brzozowski.marcin.inzynierka.activities.ChooseGroupActivity$2.onTextChanged(ChooseGroupActivity.java:103)
                  at android.widget.TextView.sendOnTextChanged(TextView.java:7679)
                  at android.widget.TextView.setText(TextView.java:4060)
                  at android.widget.TextView.setText(TextView.java:3915)
                  at android.widget.EditText.setText(EditText.java:85)
                  at android.widget.TextView.setText(TextView.java:3890)
                  at android.widget.TextView.onRestoreInstanceState(TextView.java:3790)
                  at android.view.View.dispatchRestoreInstanceState(View.java:13740)
                  at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:2893)
                  at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:2893)
                  at android.view.View.restoreHierarchyState(View.java:13718)
                  at com.android.internal.policy.impl.PhoneWindow.restoreHierarchyState(PhoneWindow.java:2009)
                  at android.app.Activity.onRestoreInstanceState(Activity.java:1023)
                  at android.app.ListActivity.onRestoreInstanceState(ListActivity.java:219)
                  at android.app.Activity.performRestoreInstanceState(Activity.java:978)
                  at android.app.Instrumentation.callActivityOnRestoreInstanceState(Instrumentation.java:1162)
                  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298)
                  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) 
                  at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3947) 
                  at android.app.ActivityThread.access$900(ActivityThread.java:151) 
                  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1309) 
                  at android.os.Handler.dispatchMessage(Handler.java:102) 
                  at android.os.Looper.loop(Looper.java:135) 
                  at android.app.ActivityThread.main(ActivityThread.java:5254) 
                  at java.lang.reflect.Method.invoke(Native Method) 
                  at java.lang.reflect.Method.invoke(Method.java:372) 
                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 

Когда я запускаю приложение в следующий раз, все в порядке. Так что ошибка возникает каждый второй запуск.


person Community    schedule 02.02.2017    source источник
comment
Вы можете ввести код своей ChooseGroupActivity?   -  person Alvaro    schedule 02.02.2017
comment
Я добавил код.   -  person    schedule 02.02.2017


Ответы (2)


Удалите инициализацию simpleAdapter из onResume. В вашем onCreate

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        initAdapter();

}
private void initAdapter(){
        simpleAdapter = new SimpleAdapter(this, employeeList,
        android.R.layout.simple_list_item_1,
        new String[] { "groups" }, new int[] { android.R.id.text1 });
        listView.setAdapter(simpleAdapter);}

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) { 
 if(simpleAdapter == null){
    initAdapter();
}
simpleAdapter.getFilter().filter(s);
       }
person Ajay Shrestha    schedule 02.02.2017

Вы создаете SimpleAdapter в onResume, но здесь происходит то, что вы установили свой textChangedListener в onCreate. После вызова onCreate Android восстанавливает состояние просмотра, включая текст в вашем представлении. Это запускает прослушиватель изменения текста перед запуском onResume и создает файл SimpleAdapter. Я думаю, вы сможете переместить свою настройку SimpleAdapter в onCreate, и тогда она просто заработает.

person Eric O'Connell    schedule 02.02.2017