2016-11-03 15 views
0

私はスピナーを作ろうとしています。私はインターネット上で多くのチュートリアルを見つけました。 しかし、常にエラーが発生します。 (ヌルオブジェクト参照)がスピナーセットアダプターの問題と質問

Q1:なぜ私はsetContentView(R.layout.activity_main); before スピナーdynamicSpinner =(スピナー) findViewById(R.id.spinnerFindType)を書く; `それはまだヌルエラーの原因は?

Q2:私のスピナーは、別のXML(find_fragment)であるので、私は setContentView(R.layout.find_fragment);setContentView(R.layout.activity_main);から を変更する必要がありますか? これは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: 仮想メソッドを呼び出そうとしました ヌルオブジェクトリファレンスでvoid android.widget.Spinner.setAdapter(android.widget.SpinnerAdapter) 'を呼び出しました com.example.user.foody.MainActivity.onCreate(MainActivity.java: でandroid.app.Activity.performCreate(Activity.java:6288) で120) あなたはフラグメントが取得する前にどのように機能するかを理解する必要があり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