Ошибка со слушателем щелчка кнопки
-
- Сообщения: 4
- Зарегистрирован: 14 июн 2014, 12:20
Ошибка со слушателем щелчка кнопки
Здравствуйте, поставил новую версию ADT и начались проблемы со слушателем setOnClickListener...как только добавляю обработку счелчка для кнопки при запуске приложение вылетает... Пробовал оставлять пустой onClick то есть без каких либо действий...как только слушатель убираю то все норм работает...В чем может быть причина? И еще относительно новой активности, которая добавилась fragment_layout, ее использовать теперь как основную вместо main layout? Подскажите пожалуйста!
Re: Ошибка со слушателем щелчка кнопки
Вылетает это как? отращивает крылья и упорхнула? или все-таки лог есть?
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
-
- Сообщения: 4
- Зарегистрирован: 14 июн 2014, 12:20
Re: Ошибка со слушателем щелчка кнопки
В логкете пишет:
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
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: Ошибка со слушателем щелчка кнопки
06-15 08:11:58.996: E/AndroidRuntime(603): Caused by: java.lang.NullPointerException
-
- Сообщения: 4
- Зарегистрирован: 14 июн 2014, 12:20
Re: Ошибка со слушателем щелчка кнопки
Весь код пишу в fragment_layout так как изначально пример генерируется тут же, а не в main_layout... Может проблема в этом? Подскажите как правильно теперь создавать приложение в обновленном АДТ.
-
- Сообщения: 4
- Зарегистрирован: 14 июн 2014, 12:20
Re: Ошибка со слушателем щелчка кнопки
Наконец разобрался с проблемкой! Оказалось, что проблема в использовании fragment_layout именно тут не работает слушатель...удалил кусок кода с mainactivity.java:
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment())
.commit();
}
и все перенес в main_layout
Подскажите как теперь в таких случаях правильно поступать? Просто сбило столку то, что пример генерируется именно в fragment_layout.
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment())
.commit();
}
и все перенес в main_layout
Подскажите как теперь в таких случаях правильно поступать? Просто сбило столку то, что пример генерируется именно в fragment_layout.
Re: Ошибка со слушателем щелчка кнопки
Не видел вашего кода но предполагаю, что Вы пытались инициализировать кнопку через функцию 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) {......
Надеюсь помог
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) {......
Надеюсь помог