Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
42 / 42 / 5
Регистрация: 20.01.2015
Сообщений: 279

Bundle savedInstanceState для фрагмента вызывает ошибку

01.06.2017, 21:33. Показов 1207. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пытаюсь сохранить состояние фрагмента при повороте экрана. Не пойму в чем моя ошибка, поиск в сети вразумительного ответа не дал.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public class FrPlaceShop extends Fragment {
    final String MY_LOG="myLog";
    ImageButton btnPurchase,btnSavePlace;
    EditText etNameShop;
    final String NAME_SHOP="NAME_SHOP";
 
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View v=inflater.inflate(R.layout.frshopvertical,null);
        btnPurchase=(ImageButton)v.findViewById(R.id.btnPurchase);
        btnSavePlace=(ImageButton)v.findViewById(R.id.btnSavePlace);
        etNameShop=(EditText)v.findViewById(R.id.etNameShop);
        if(savedInstanceState!=null){
            String aaa;
            aaa=savedInstanceState.getString(NAME_SHOP);
            Log.d(MY_LOG,"FrPlaceShop "+aaa);
            etNameShop.setText(aaa);
        }
        return v;
    }
 
    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        String aaa=etNameShop.getText().toString();//говорит что здесь ошибка
        Log.d(MY_LOG,"onSaveInstanceState "+ aaa);
        outState.putString(NAME_SHOP,aaa);
 
    }
}
код ошибки
Process: com.bignerdranch.android.buildshop, PID: 15699
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.bignerdranch.android.b uildshop/com.bignerdranch.android.buildshop.Build Shop}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.EditText.setText(java.lan g.CharSequence)' on a null object reference
at android.app.ActivityThread.performLaunch Activity(ActivityThread.java:2325)
at android.app.ActivityThread.handleLaunchA ctivity(ActivityThread.java:2387)
at android.app.ActivityThread.handleRelaunc hActivity(ActivityThread.java:3947)
at android.app.ActivityThread.access$900(Ac tivityThread.java:151)
at android.app.ActivityThread$H.handleMessa ge(ActivityThread.java:1309)
at android.os.Handler.dispatchMessage(Handl er.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(Activity Thread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.j ava:372)
at com.android.internal.os.ZygoteInit$Metho dAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main( ZygoteInit.java:698)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.EditText.setText(java.lan g.CharSequence)' on a null object reference
at com.bignerdranch.android.buildshop.FrPla ceShop.onCreateView(FrPlaceShop.java:33)
at android.support.v4.app.Fragment.performC reateView(Fragment.java:2087)
at android.support.v4.app.FragmentManagerIm pl.moveToState(FragmentManager.java:1113 )
at android.support.v4.app.FragmentManagerIm pl.moveToState(FragmentManager.java:1295 )
at android.support.v4.app.FragmentManagerIm pl.moveToState(FragmentManager.java:1277 )
at android.support.v4.app.FragmentManagerIm pl.dispatchActivityCreated(FragmentManag er.java:2154)
at android.support.v4.app.FragmentControlle r.dispatchActivityCreated(FragmentContro ller.java:201)
at android.support.v4.app.FragmentActivity. onStart(FragmentActivity.java:603)
at android.support.v7.app.AppCompatActivity .onStart(AppCompatActivity.java:181)
at android.app.Instrumentation.callActivity OnStart(Instrumentation.java:1236)
at android.app.Activity.performStart(Activi ty.java:6006)
at android.app.ActivityThread.performLaunch Activity(ActivityThread.java:2288)
at android.app.ActivityThread.handleLaunchA ctivity(ActivityThread.java:2387)*
at android.app.ActivityThread.handleRelaunc hActivity(ActivityThread.java:3947)*
at android.app.ActivityThread.access$900(Ac tivityThread.java:151)*
at android.app.ActivityThread$H.handleMessa ge(ActivityThread.java:1309)*
at android.os.Handler.dispatchMessage(Handl er.java:102)*
at android.os.Looper.loop(Looper.java:135)*
at android.app.ActivityThread.main(Activity Thread.java:5254)*
at java.lang.reflect.Method.invoke(Native Method)*
at java.lang.reflect.Method.invoke(Method.j ava:372)*
at com.android.internal.os.ZygoteInit$Metho dAndArgsCaller.run(ZygoteInit.java:903)*
at com.android.internal.os.ZygoteInit.main( ZygoteInit.java:698)*
06-01 18:29:31.439 1123-1123/? E/EGL_emulation: tid 1123: eglCreateSyncKHR(1299): error 0x3004 (EGL_BAD_ATTRIBUTE)

Вроде как говорит что etNameShop это нулевой объект. Плз поможите, лучше правильным кодом.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.06.2017, 21:33
Ответы с готовыми решениями:

еременная которой нигде нет(не описана) не вызывает ошибку в большом инете, а на локале вызывает ошибку
Совсем я ничего не понимаю. Переменная которой нигде нет(не описана) не вызывает ошибку в большом инете, а на локале вызывает ошибку. ЧТО...

Bundle провоцирует ошибку на Android 4.4
С Гугл Плея мне приходят отчёты о сбоях. Все ошибки я стараюсь исправлять, но я понял, что без сторонней помощи вообще ничего не...

Объявление вызывает ошибку
1. где объявлять глобальные константы и переменные? в файле с ароматом .h? 2.Объявление extern fstream AccFile; вызывают ошибку ...

2
 Аватар для arvalon
22 / 7 / 2
Регистрация: 26.10.2012
Сообщений: 212
Записей в блоге: 1
03.06.2017, 14:30
А у вас точно ошибка в
Java
1
String aaa=etNameShop.getText().toString();//говорит что здесь ошибка
В стеке ошибке идёт речь же о методе setText, а не о getText, и в строчке 33
Java
1
2
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.EditText.setText(java.lang.CharSequence)' on a null object reference
at com.bignerdranch.android.buildshop.FrPlaceShop.onCreateView(FrPlaceShop.java:33)
33 строчку мы уже не увидим, вы код почистили от лишнего, но мне кажется ошибка в строчке 17 (как мы видими их сейчас):
Java
1
etNameShop.setText(aaa);
Это единственный setText в куске кода.
И похоже с EditText всё нормально, nullpointer на переменной "aaa". Не очень помню поведение Bundle savedInstanceState у фрагментов и активнойстей, но получается этот Bundle не нулл уже с самого начала, при первом вызове onCreateView. Но сам он пуст, в частности там нет строчки с ключом "NAME_SHOP".
Предлагаю:
1. Поменять условие, не на null проверять а на существование в Bundle экстры с таким ключом. Метод hasExctra.
2. Вообще не искать ничего в Bundle в onCreateView, а прооверрайдить метод-собрат onRestoreInstanceState, проверять в нём Bundle на существование нужного ключа и присваивать EditText'у значения там.
0
42 / 42 / 5
Регистрация: 20.01.2015
Сообщений: 279
04.06.2017, 07:29  [ТС]
Цитата Сообщение от arvalon Посмотреть сообщение
прооверрайдить метод-собрат onRestoreInstanceState
Пробовал эффект тот же.
Ошибка с EditText. Там видимо какой то баг когда определяешь его через inflater. Тот же самый код, но выводить его напрямую на активити то все нормально. Попозже посижу подумаю.
П.С. ЭдитТекст ничем заменить нельзя, капризная хреновина для фрагмента оказалась, даже не подозревал.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.06.2017, 07:29
Помогаю со студенческими работами здесь

Запрос вызывает ошибку
Делаю запрос программно Есть запрос 'UPDATE users SET (type , login, password, name, phone, mail) VALUES('+bStr+') WHERE...

Макрос вызывает ошибку -9-
Кто подскажет? В книге Book1.xls в яйчейке A1 вписано имя файла As36.xls При помоши макроса с комбинацией Ctrl+q (макрос в книге...

Ajax - вызывает ошибку в IE
new Ajax(a.getProperty('href'),{method:'get',update:'lightbox_content',data:'tolightbox='+1,...

Prodad codec вызывает ошибку
В общем проблема касается ProDAD (Adorage, Heroglyph и т.д.). Если авишка сжата кодеком ProDAD (кодек с альфа-каналом), то при открытии...

WxFrame вызывает ошибку сегментации
Возникает проблема с программой при создание wxFrame. Как только программа начинает выполнять функцию ниже, то происходит ошибка...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru