2016-11-03 76 views
0

我想做一個微調,我在互聯網上找到這麼多的教程。 但它總是會導致錯誤。 (空對象引用)微調SetAdapter問題和問題

Q1:爲什麼寫setContentView(R.layout.activity_main); before 微調dynamicSpinner =(微調) findViewById(R.id.spinnerFindType);`它仍然會導致空錯誤?

Q2:我的微調是在另一個XML(find_fragment),所以我應該改變 從setContentView(R.layout.activity_main);setContentView(R.layout.find_fragment);? 但這是MainActivity.java

Thnak you so so much!

這是我的代碼。

@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:試圖調用虛擬 方法'void android.widget.Spinner.setAdapter(android.widget.SpinnerAdapter)' null對象引用 at 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

而y是你在find_fragment中的微調嗎? – Basanth

+0

@Basanth嗨,謝謝你的回覆。 我製作一個幻燈片菜單,並且所有頁面都是片段。 我在一個片段中(在find_fragment.xml中)製作一個微調器。 – Kevin

回答

0

您需要了解片段讓之前是如何工作的進入這個。本教程將幫助您開始使用片段和「幻燈片」菜單。 Fragment Navigation Drawer