-1

私はMenudrawerとSpinnerを1つのアクティビティにしたいアンドロイドアプリを開発しています。setDrawerListenerクラッシュアンドロイドアプリ

コードスニペット:

public class Dashboard extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener { 

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.layout_dashboard); 


    // Spinner element 
     Spinner spinner1 = (Spinner) findViewById(R.id.spinner); 

    // Creating adapter for spinner 
     ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, categories); 

    // Drop down layout style - list view with radio button 
     dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

    // attaching data adapter to spinner 
    spinner1.setAdapter(dataAdapter); 

    // Spinner click listener 
    spinner1.setOnItemSelectedListener(new OnItemSelectedListener() { 
     @Override 
     public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) { 


      // Showing selected spinner item 
       Toast.makeText(parent.getContext(), "Selected: " + item, Toast.LENGTH_LONG).show(); 

     } 

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

    }); 


    //Adding MenuDrawer... 
     Toolbar toolbar = (Toolbar) findViewById(R.id.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.setNavigationItemSelectedListener((NavigationView.OnNavigationItemSelectedListener) this); 
} 

を私は上記のコードを書かれているが、それは次のエラーでクラッシュ:

layout_dashboard.xml

Java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v4.widget.DrawerLayout.setDrawerListener(android.support.v4.widget.DrawerLayout$DrawerListener)' on a null object reference at android.app.ActivityThread.performLaunchActivity

ここではレイアウトxmlファイルです

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    > 


    <Spinner 
     android:layout_width="match_parent" 
     android:layout_height="50dp" 
     android:layout_marginLeft="10dp" 
     android:layout_marginRight="10dp" 
     android:layout_marginTop="10dp" 
     android:id="@+id/spinner" 
     android:background="@drawable/spinner_border"/> 

    <EditText 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:inputType="phone" 
     android:ems="10" 
     android:id="@+id/quantityField" 
     android:hint="Qunatity" 
     android:layout_marginLeft="10dp" 
     android:layout_marginRight="10dp" 
     android:layout_marginTop="10dp" /> 

    <EditText 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:inputType="phone" 
     android:ems="10" 
     android:id="@+id/priceField" 
     android:layout_marginLeft="10dp" 
     android:layout_marginRight="10dp" 
     android:layout_marginTop="10dp" 
     android:hint="Price" /> 

    <Button 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="5 August 2016" 
     android:id="@+id/dateBtn" 
     android:height="60dp" 
     android:layout_marginLeft="10dp" 
     android:layout_marginRight="10dp" 
     android:layout_marginTop="10dp" /> 


    <Button 
     android:layout_width="200dp" 
     android:layout_height="wrap_content" 
     android:text="Add" 
     android:id="@+id/addBtn" 
     android:layout_margin="10dp" 
     android:layout_gravity="center_horizontal" 
     android:background="@drawable/button_shape" 
     android:textColor="#ffffff" 
     /> 


</LinearLayout> 
+0

logcatを共有してください – SaravInfern

+0

layout_dashboard.xmlファイルを表示してください。 – Drv

+0

http://imgur.com/a/PsjZ6 – Krunal

答えて

0

xmlファイルを以下に変更してください。レイアウトファイルがないレイアウトにDrawerLayoutNavigationViewを追加しました。

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/drawer_layout" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:fitsSystemWindows="true"> 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" 
> 


<Spinner 
    android:layout_width="match_parent" 
    android:layout_height="50dp" 
    android:layout_marginLeft="10dp" 
    android:layout_marginRight="10dp" 
    android:layout_marginTop="10dp" 
    android:id="@+id/spinner" 
    android:background="@drawable/spinner_border"/> 

<EditText 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:inputType="phone" 
    android:ems="10" 
    android:id="@+id/quantityField" 
    android:hint="Qunatity" 
    android:layout_marginLeft="10dp" 
    android:layout_marginRight="10dp" 
    android:layout_marginTop="10dp" /> 

<EditText 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:inputType="phone" 
    android:ems="10" 
    android:id="@+id/priceField" 
    android:layout_marginLeft="10dp" 
    android:layout_marginRight="10dp" 
    android:layout_marginTop="10dp" 
    android:hint="Price" /> 

<Button 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:text="5 August 2016" 
    android:id="@+id/dateBtn" 
    android:height="60dp" 
    android:layout_marginLeft="10dp" 
    android:layout_marginRight="10dp" 
    android:layout_marginTop="10dp" /> 


<Button 
    android:layout_width="200dp" 
    android:layout_height="wrap_content" 
    android:text="Add" 
    android:id="@+id/addBtn" 
    android:layout_margin="10dp" 
    android:layout_gravity="center_horizontal" 
    android:background="@drawable/button_shape" 
    android:textColor="#ffffff" 
    /> 


</LinearLayout> 


<android.support.design.widget.NavigationView 
    android:id="@+id/nav_view" 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:layout_gravity="start" 
    app:itemTextAppearance="?attr/textAppearanceListItem" 
    app:menu="@menu/drawer" /> 
</android.support.v4.widget.DrawerLayout> 
+0

ここにエラーが表示されます: 'XMLを解析する際にエラーが発生しました:文書要素の後に迷惑メール ' – Krunal

+0

完全なエラーメッセージを投稿できますか? – himanshu1496

+0

そして明らかであるように、 'navigationView'のメニューオプションを含む' drawer.xml'メニューファイルを渡していますか? – himanshu1496

1

という名前のレイアウトにはandroid:id="@+id/drawer_layout"のビューがありません。

UPD

DrawerLayoutを使用する方法をあなたの側から誤解があるようです。約There is good articleについては、まだ質問があるかどうかを確認してください。

+0

'layout_dashboard'はmy xmlファイルで、レイアウトフォルダ内にあります。 – Krunal

+1

@Krunalはい、id = drawer_layoutのビューはありません。投稿者drawer_layout – Divers

+0

@Krunal私は自分の答えを更新しました。チェックしてください。 – Divers