Ошибка со слушателем щелчка кнопки

Ответить
Dfinchenko
Сообщения: 4
Зарегистрирован: 14 июн 2014, 12:20

Ошибка со слушателем щелчка кнопки

Сообщение Dfinchenko » 14 июн 2014, 12:28

Здравствуйте, поставил новую версию ADT и начались проблемы со слушателем setOnClickListener...как только добавляю обработку счелчка для кнопки при запуске приложение вылетает... Пробовал оставлять пустой onClick то есть без каких либо действий...как только слушатель убираю то все норм работает...В чем может быть причина? И еще относительно новой активности, которая добавилась fragment_layout, ее использовать теперь как основную вместо main layout? Подскажите пожалуйста!

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Ошибка со слушателем щелчка кнопки

Сообщение Foenix » 15 июн 2014, 07:40

Вылетает это как? отращивает крылья и упорхнула? или все-таки лог есть?
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Dfinchenko
Сообщения: 4
Зарегистрирован: 14 июн 2014, 12:20

Re: Ошибка со слушателем щелчка кнопки

Сообщение Dfinchenko » 15 июн 2014, 11:16

В логкете пишет:
06-15 08:11:58.996: E/AndroidRuntime(603): FATAL EXCEPTION: main
06-15 08:11:58.996: E/AndroidRuntime(603): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.app/com.example.app.MainActivity}: java.lang.NullPointerException
06-15 08:11:58.996: E/AndroidRuntime(603): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
06-15 08:11:58.996: E/AndroidRuntime(603): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
06-15 08:11:58.996: E/AndroidRuntime(603): at android.app.ActivityThread.access$600(ActivityThread.java:123)
06-15 08:11:58.996: E/AndroidRuntime(603): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
06-15 08:11:58.996: E/AndroidRuntime(603): at android.os.Handler.dispatchMessage(Handler.java:99)
06-15 08:11:58.996: E/AndroidRuntime(603): at android.os.Looper.loop(Looper.java:137)
06-15 08:11:58.996: E/AndroidRuntime(603): at android.app.ActivityThread.main(ActivityThread.java:4424)
06-15 08:11:58.996: E/AndroidRuntime(603): at java.lang.reflect.Method.invokeNative(Native Method)
06-15 08:11:58.996: E/AndroidRuntime(603): at java.lang.reflect.Method.invoke(Method.java:511)
06-15 08:11:58.996: E/AndroidRuntime(603): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
06-15 08:11:58.996: E/AndroidRuntime(603): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
06-15 08:11:58.996: E/AndroidRuntime(603): at dalvik.system.NativeStart.main(Native Method)
06-15 08:11:58.996: E/AndroidRuntime(603): Caused by: java.lang.NullPointerException
06-15 08:11:58.996: E/AndroidRuntime(603): at com.example.app.MainActivity.onCreate(MainActivity.java:22)
06-15 08:11:58.996: E/AndroidRuntime(603): at android.app.Activity.performCreate(Activity.java:4465)
06-15 08:11:58.996: E/AndroidRuntime(603): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
06-15 08:11:58.996: E/AndroidRuntime(603): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
06-15 08:11:58.996: E/AndroidRuntime(603): ... 11 more
06-15 08:11:59.165: I/dalvikvm(603): threadid=3: reacting to signal 3
06-15 08:11:59.197: I/dalvikvm(603): Wrote stack traces to '/data/anr/traces.txt'
06-15 08:11:59.716: I/dalvikvm(603): threadid=3: reacting to signal 3
06-15 08:11:59.855: I/dalvikvm(603): Wrote stack traces to '/data/anr/traces.txt'

А вот в виртуалке пишет: unfortunately app has stopped

Аватара пользователя
altwin
Сообщения: 1951
Зарегистрирован: 13 ноя 2013, 14:46

Re: Ошибка со слушателем щелчка кнопки

Сообщение altwin » 15 июн 2014, 11:20

06-15 08:11:58.996: E/AndroidRuntime(603): Caused by: java.lang.NullPointerException
Изображение

Dfinchenko
Сообщения: 4
Зарегистрирован: 14 июн 2014, 12:20

Re: Ошибка со слушателем щелчка кнопки

Сообщение Dfinchenko » 15 июн 2014, 11:22

Весь код пишу в fragment_layout так как изначально пример генерируется тут же, а не в main_layout... Может проблема в этом? Подскажите как правильно теперь создавать приложение в обновленном АДТ.

Dfinchenko
Сообщения: 4
Зарегистрирован: 14 июн 2014, 12:20

Re: Ошибка со слушателем щелчка кнопки

Сообщение Dfinchenko » 15 июн 2014, 11:31

Наконец разобрался с проблемкой! Оказалось, что проблема в использовании fragment_layout именно тут не работает слушатель...удалил кусок кода с mainactivity.java:
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment())
.commit();
}
и все перенес в main_layout
Подскажите как теперь в таких случаях правильно поступать? Просто сбило столку то, что пример генерируется именно в fragment_layout.

Makso
Сообщения: 12
Зарегистрирован: 02 июн 2014, 13:17
Откуда: Казахстан, Чимкент

Re: Ошибка со слушателем щелчка кнопки

Сообщение Makso » 20 июн 2014, 11:35

Не видел вашего кода но предполагаю, что Вы пытались инициализировать кнопку через функцию findViewById, а потом подписаться на слушателя. Так вот это надо делать в процедуре onCreateView в классе PlaceholderFragment.

public static class PlaceholderFragment extends Fragment {

public PlaceholderFragment() {
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main, container,
false);

myButton = (Button) rootView.findViewById(R.id.<кнопка в лайоуте>);
myButton.setOnClickListener( и т.д.)

return rootView;
}
}

Переменную можно прописать в классе Активити - static Button btn;
И тогда к ней можно будет уже обращаться внутри Активити без инициализации.

Кстати myButton.setOnClickListener можно выполнять и в onCreate самой активити, но только после if (savedInstanceState == null) {......

Надеюсь помог ;)

Ответить