2017-02-11 9 views
0

作成しているアプリ用のナビゲーションドロワーを作成しました。私は、ナビゲーション・ドロワーの作業で別のアクティビティーへのリンクを作ることができないという問題に遭遇しました。ナビゲーションドロワーインテントアクティビティAndroidスタジオ

主な活動

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> 

私はシュルありませんよ私がインテントを使用しなければならない場合や、誰かが私を偉大になるように導くことができれば、それがどのように機能するのか。他のコードが必要な場合は、質問してください。

答えて

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ファイルにidを正しく入力する必要がありますか? 2番目のQuestoin ....私は公共のvoid initNavigationDrawer(){言って、エラーを取得しています。期待されています? –

+0

これを追加します: 'アンドロイド: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フォルダを右クリックして、Activity ---> NavigationDrawerを選択してください。 – Shekhar

+0

これを行うことはできますif(id == R.id.nav_home)の中にインテントを入れますか? –