2013-08-24 3 views
0

У меня возникли проблемы с тем, чтобы выяснить, где разместить моих слушателей (у меня есть два слушателя, которых я пытаюсь настроить, но упомянуть только один здесь, и, надеюсь, он сможет работать второй для себя!).Android - Где я должен разместить своих слушателей?

У меня есть прядильщик и вы хотите обновить некоторые текстовые элементы, когда элемент с прядильной камерой изменится, поэтому думаю, что хочу прослушиватель onItemSelected. Я попытался поместить его в метод onCreate и метод onStart после прочтения чужого вопроса о SO, но приложение будет только FC, когда оно загрузится.

Приложение использует вкладки/фрагменты для навигации, может ли это быть чем-то связанным с проблемой (Фрагменты не раздуты при попытке установить слушателя)?

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 


    // Create the adapter that will return a fragment for each of the three 
    // primary sections of the app. 
    mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager()); 

    // Set up the ViewPager with the sections adapter. 
    mViewPager = (ViewPager) findViewById(R.id.pager); 
    mViewPager.setAdapter(mSectionsPagerAdapter); 

    spinner = (Spinner)findViewById(R.id.spinner); 
    spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
     @Override 
     public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) { 
      Toast.makeText(getApplicationContext(), "hello", Toast.LENGTH_LONG).show(); 
     } 

     @Override 
     public void onNothingSelected(AdapterView<?> parentView) { 
      // your code here 
     } 

    }); 


} 

И лодка;

08-24 17:19:16.256 13803-13803/com.example.myapplication E/AndroidRuntime: FATAL EXCEPTION: main 
    java.lang.RuntimeException: Unable to start activity  ComponentInfo{com.example.myapplication/com.example.myapplication.MainActivity}: java.lang.NullPointerException 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261) 
    at android.app.ActivityThread.access$600(ActivityThread.java:141) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256) 
    at android.os.Handler.dispatchMessage(Handler.java:99) 
    at android.os.Looper.loop(Looper.java:137) 
    at android.app.ActivityThread.main(ActivityThread.java:5103) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:525) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
    at dalvik.system.NativeStart.main(Native Method) 
    Caused by: java.lang.NullPointerException 
    at com.example.myapplication.MainActivity.onCreate(MainActivity.java:57) 
    at android.app.Activity.performCreate(Activity.java:5133) 
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175) 
    ... 11 more 
+0

Опубликовать код и трассировку стека FC является «ForceClose» означает сбой – Raghunandan

+0

Что находится в строке 57? – VM4

+0

'spinner.setOnItemSelectedListener (новый AdapterView.OnItemSelectedListener() {' –

ответ

1

Когда вы получите NullPointerException в spinner.setXXX() тогда ваша spinner переменная содержит нуль. Это означает, что findViewById() в сосне раньше не нашел прядильщика в текущем контексте. Контекст задается вашей линией setContentView().

Итог: похоже, что ваш R.layout.activity_main не содержит R.id.spinner.

+0

Это правильно. 'R.id.spinner' находится в макете' spinner.xml', который накачивается вкладками. –

+0

Затем вы должны назначить слушателя сразу после раздувания 'spinner.xml'. – Barend

Смежные вопросы