2016-11-03 6 views
0

Я пытаюсь сделать spinner, и я нахожу так много учебников в Интернете. Но это всегда вызывает ошибку. (Нуль ссылка на объект)Spinner SetAdapter Проблемы и вопросы

Q1: почему я написать setContentView(R.layout.activity_main); before Spinner dynamicSpinner = (Spinner) findViewById (R.id.spinnerFindType); `она по-прежнему вызывает Null ошибка?

Q2: Моя вертушка в другом XML (find_fragment), так что я должен изменить от setContentView(R.layout.activity_main); к setContentView(R.layout.find_fragment);? , но это в MainActivity.java

Thnak вам так много!

Вот мой код.

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

    // ---------------------------- Init Menu slider ----------------------------------- 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
      this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); 
    drawer.setDrawerListener(toggle); 
    toggle.syncState(); 

    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
    navigationView.setItemIconTintList(null); // show Icon 
    navigationView.setNavigationItemSelectedListener(this); 
    displayView(R.id.menu_about); // First page to About 
    // --------------------------------------------------------------------------------- 


    Spinner dynamicSpinner = (Spinner) findViewById(R.id.spinnerFindType); 

    String[] items = new String[] { "A", "B", "C" }; 

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
      android.R.layout.simple_spinner_item, items); // Use String[] , Dynamic 

    dynamicSpinner.setAdapter(adapter); 

    dynamicSpinner.setOnItemSelectedListener(new OnItemSelectedListener() { 
     @Override 
     public void onItemSelected(AdapterView<?> parent, View view, 
            int position, long id) { 
      Toast.makeText(getApplicationContext(), (String) parent.getItemAtPosition(position), Toast.LENGTH_LONG).show(); 
     } 

     @Override 
     public void onNothingSelected(AdapterView<?> parent) { 
      // TODO Auto-generated method stub 
     } 
    }); 
} 

activity_main.xml

<?xml version="1.0" encoding="utf-8"?> 

<include 
    layout="@layout/app_bar_main" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" /> 

<android.support.design.widget.NavigationView 
    android:id="@+id/nav_view" 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:layout_gravity="start" 
    android:fitsSystemWindows="true" 
    app:headerLayout="@layout/nav_header_main" 
    app:menu="@menu/activity_main_drawer" /> 

Мой LogCat:

Вызванный: java.lang.NullPointerExc eption: Попытка вызвать метод виртуального 'недействительного android.widget.Spinner.setAdapter (android.widget.SpinnerAdapter)' по ссылке в нулевого объекта в com.example.user.foody.MainActivity.onCreate (MainActivity.java: 120) на android.app.Activity.performCreate (Activity.java:6288) на android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1119)

+1

Вам либо нужно добавить счетчик в файле activity_main.xml, либо создать фрагмент в этом действии, а затем связать с ним счетчик. – Basanth

+0

И у вас ваш счетчик в find_fragment? – Basanth

+0

@Basanth Привет, спасибо за ваш ответ. Я создаю меню слайдов, и все страницы являются фрагментами. И я делаю прядильщик в одном из фрагментов (в find_fragment.xml). – Kevin

ответ

0

Вы должны понять, как фрагменты работы, прежде чем в это. В этом руководстве вы должны начать с использования фрагментов вместе с меню слайдов. Fragment Navigation Drawer

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

  • Нет связанных вопросов^_^