2017-02-11 151 views
0

我爲我創建的應用程序創建了一個導航抽屜,我正在學習代碼和所有內容。我已經到了無法與導航抽屜工作中的其他活動建立鏈接的地步。導航抽屜意向活動Android Studio

主要活動

public class MainActivity2 extends AppCompatActivity { 

private DrawerLayout mDrawerLayout; 
private ActionBarDrawerToggle mToggle; 



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

    final Button bCreateTask = (Button) findViewById(R.id.btnCreateNewTask); 

    mDrawerLayout = (DrawerLayout) findViewById(R.id.DrawerLayout); 
    mToggle = new ActionBarDrawerToggle(this,mDrawerLayout, R.string.Open,  R.string.Close); 

    mDrawerLayout.addDrawerListener(mToggle); 
    mToggle.syncState(); 

    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

    bCreateTask.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent intent = new Intent(MainActivity2.this,             NewTaskActivity.class); 
      MainActivity2.this.startActivity(intent); 

     } 
    }); 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    if(mToggle.onOptionsItemSelected(item)){ 
     return true; 

    } 
    return super.onOptionsItemSelected(item); 
} 




} 

main.xml中

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

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 


    <Button 
     android:text="New Task" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/btnCreateNewTask" 
     android:layout_weight="1" /> 
</LinearLayout> 

<android.support.design.widget.NavigationView 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    app:menu="@menu/navigation_menu" 
    android:layout_gravity="start" 
    app:headerLayout="@layout/navigation_header"> 
</android.support.design.widget.NavigationView> 

</android.support.v4.widget.DrawerLayout> 

Navigation_Menu.xml

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:id="@+id/nav_accont" 
    android:icon="@mipmap/ic_person_black_24dp" 
    android:title="MyAccount"/> 
<item android:id="@+id/nav_setting" 
    android:icon="@mipmap/ic_settings_black_24dp" 
    android:title="settings"/> 
<item android:id="@+id/nav_logout" 
    android:icon="@mipmap/ic_lock_outline_black_24dp" 
    android:title="logout"/> 


</menu> 

我不河畔e如果我必須使用意圖或者如果有人能夠引導我,那會很好。如果需要其他代碼,請詢問並且不滿意提供。

回答

0

試試這個:

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

    final Button bCreateTask = (Button) findViewById(R.id.btnCreateNewTask); 

    mDrawerLayout = (DrawerLayout) findViewById(R.id.DrawerLayout); 
    mToggle = new ActionBarDrawerToggle(this,mDrawerLayout, R.string.Open,R.string.Close); 

    mDrawerLayout.addDrawerListener(mToggle); 
    mToggle.syncState(); 

    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

    bCreateTask.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent intent = new Intent(MainActivity2.this,NewTaskActivity.class); 
      MainActivity2.this.startActivity(intent); 

     } 
    }); 
} 

public void initNavigationDrawer() { 

    NavigationView navigationView = (NavigationView) findViewById(R.id.navigation_view); 
    navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { 
     @Override 
     public boolean onNavigationItemSelected(MenuItem menuItem) { 

      int id = menuItem.getItemId(); 

      switch (id) { 
       case R.id.nav_accont: 
        Intent intent = new Intent(MainActivity2.this, SecondActivity.class); 
        startActivity(intent); 
        break; 
       case R.id.nav_setting: 
        //same logic 
        break; 
       case R.id.nav_logout: 
        //same logic 
        break; 
       default: 
        break; 
      } 
      return true; 
     } 
    }); 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    if(mToggle.onOptionsItemSelected(item)){ 
     return true; 

    } 
    return super.onOptionsItemSelected(item); 
} 
在佈局

另外:

<android.support.design.widget.NavigationView 
    android:id="@+id/navigation_view" 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    app:menu="@menu/navigation_menu" 
    android:layout_gravity="start" 
    app:headerLayout="@layout/navigation_header"> 
</android.support.design.widget.NavigationView> 
+0

我添加它在你說的地方,但我有2個問題。第一個是,R.id.navigation_menu我必須給這個XML文件的ID是正確的?第二個Questoin ....即時通訊在公共無效initNavigationDrawer(){說;是期待? –

+0

添加這個:'android:id =「@ + id/navigation_view」'在ur導航視圖中xml – rafsanahmad007

+0

完成,但是將它命名爲navigation_menu如果這有所作爲:)我怎樣才能擺脫;錯誤? –

0
bCreateTask.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent intent = new Intent(MainActivity2.this, NewTaskActivity.class); 
      startActivity(intent); 

     } 
    }); 
+0

我明白這一點,但將正確的,因爲畫面中一個單獨的按鈕,我試圖使導航抽屜鏈接到其他活動。 –

+0

感謝您的幫助。你可能應該[編輯](http://stackoverflow.com/posts/42180704/edit)你以前的答案,並添加此作爲附錄,而不是單獨回答。 –

0

如果你想添加抽屜,那麼你必須使用這種方式。

 @SuppressWarnings("StatementWithEmptyBody") 
    @Override 
    public boolean onNavigationItemSelected(MenuItem item) { 
     int id = item.getItemId(); 

     if (id == R.id.nav_home) { 

     } else if (id == R.id.nav_profile) { 

     } else if (id == R.id.nav_study_list) { 

     } 
     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     drawer.closeDrawer(GravityCompat.START); 
     return true; 
    } 
+0

我會怎麼說讓nav_home連接到MainActivity2? –

+0

爲簡單起見,如果您使用的是Android Studio,請右鍵單擊src文件夾,然後選擇「活動---> NavigationDrawer」。 – Shekhar

+0

我可以這樣做把意圖裏面的if(id == R.id.nav_home)? –