Страница 1 из 1
Ошибка со слушателем щелчка кнопки
Добавлено: 14 июн 2014, 12:28
Dfinchenko
Здравствуйте, поставил новую версию ADT и начались проблемы со слушателем setOnClickListener...как только добавляю обработку счелчка для кнопки при запуске приложение вылетает... Пробовал оставлять пустой onClick то есть без каких либо действий...как только слушатель убираю то все норм работает...В чем может быть причина? И еще относительно новой активности, которая добавилась fragment_layout, ее использовать теперь как основную вместо main layout? Подскажите пожалуйста!
Re: Ошибка со слушателем щелчка кнопки
Добавлено: 15 июн 2014, 07:40
Foenix
Вылетает это как? отращивает крылья и упорхнула? или все-таки лог есть?
Re: Ошибка со слушателем щелчка кнопки
Добавлено: 15 июн 2014, 11:16
Dfinchenko
В логкете пишет:
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
Re: Ошибка со слушателем щелчка кнопки
Добавлено: 15 июн 2014, 11:20
altwin
06-15 08:11:58.996: E/AndroidRuntime(603): Caused by: java.lang.NullPointerException
Re: Ошибка со слушателем щелчка кнопки
Добавлено: 15 июн 2014, 11:22
Dfinchenko
Весь код пишу в fragment_layout так как изначально пример генерируется тут же, а не в main_layout... Может проблема в этом? Подскажите как правильно теперь создавать приложение в обновленном АДТ.
Re: Ошибка со слушателем щелчка кнопки
Добавлено: 15 июн 2014, 11:31
Dfinchenko
Наконец разобрался с проблемкой! Оказалось, что проблема в использовании fragment_layout именно тут не работает слушатель...удалил кусок кода с mainactivity.java:
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment())
.commit();
}
и все перенес в main_layout
Подскажите как теперь в таких случаях правильно поступать? Просто сбило столку то, что пример генерируется именно в fragment_layout.
Re: Ошибка со слушателем щелчка кнопки
Добавлено: 20 июн 2014, 11:35
Makso
Не видел вашего кода но предполагаю, что Вы пытались инициализировать кнопку через функцию 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) {......
Надеюсь помог
