2017-02-11 4 views
0

Я создал ящик для навигации для приложения, которое я создаю, я изучаю код и все, что хожу. Я пришел к тому моменту, когда я не могу делать какие-либо ссылки на другое действие в работе ящика навигации.Навигационный ящик Intent Activity 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

Ive добавил его туда, где вы сказали, но у меня есть 2 вопроса. Во-первых, что R.id.navigation_menu, я должен правильно указать этот xml-файл? Second Questoin .... im получает сообщение об ошибке void initNavigationDrawer() {say; ожидается? –

+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

Как я могу сделать let say nav_home ссылку на MainActivity2? –

+0

Для простоты, если вы используете Android Studio, затем щелкните правой кнопкой мыши папку src и выберите Activity ---> NavigationDrawer. – Shekhar

+0

Могу ли я это сделать, если у вас есть намерение внутри if (id == R.id.nav_home)? –