导航抽屉意向活动Android Studio

问题描述:

我为我创建的应用程序创建了一个导航抽屉,我正在学习代码和所有内容。我已经到了无法与导航抽屉工作中的其他活动建立链接的地步。导航抽屉意向活动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如果我必须使用意图或者如果有人能够引导我,那会很好。如果需要其他代码,请询问并且不满意提供。

试试这个:

@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如果这有所作为:)我怎样才能摆脱;错误? –

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

     } 
    }); 
+0

我明白这一点,但将正确的,因为画面中一个单独的按钮,我试图使导航抽屉链接到其他活动。 –

+0

感谢您的帮助。你可能应该[编辑](http://*.com/posts/42180704/edit)你以前的答案,并添加此作为附录,而不是单独回答。 –

如果你想添加抽屉,那么你必须使用这种方式。

 @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)? –