0

ライブラリー(https://github.com/mikepenz/MaterialDrawer)と3つのフラグメント(HomeFragment、LiveFragment、MovieFragment)を含むスライドタブを使用するプロジェクトナビゲーションドロワーがあります。いくつかのフラグメント付きナビゲーションドロワーからスライディングタブメニューの項目を選択

MainActivity.classにナビゲーション・ドロワーが作成されました。いくつかの項目(ホーム、ライブTV、映画)があります。私は、ナビゲーション・ドロワーからアイテム・ホームをクリックして、HomeFragmentに移動したいと思います。私は以下のコードで試しましたが、ナビゲーション・ドロワーからアイテム・ホームをクリックすると何も起こりません。 この問題を解決するのを手伝ってください。ありがとう:)

これは私のMainAactivity.class

public class MainActivity extends AppCompatActivity{ 
public final static int NAV_ID_FRAG_ONE = 1; 
public final static int NAV_ID_FRAG_TWO = 2; 
public final static int NAV_ID_FRAG_THREE = 3; 
public final static int NAV_ID_ABOUT_ACTIVITY = 6; 

Toolbar toolbar; 
private SlidingTabLayout mSlidingTabLayout; 
private ViewPager mViewPager; 
private Drawer result; 
private AccountHeader headerResult; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar); 
    toolbar.setTitle("JMN Anywhere"); 
    setSupportActionBar(toolbar); 


    mViewPager = (ViewPager) findViewById(R.id.vp_tabs); 
    mViewPager.setAdapter(new TabAdapter(getSupportFragmentManager(), this)); 

    mSlidingTabLayout = (SlidingTabLayout) findViewById(R.id.st1_tabs); 
    mSlidingTabLayout.setDistributeEvenly(true);//meratakan posisi icon 
    mSlidingTabLayout.setBackgroundColor(getResources().getColor(R.color.colorPrimary)); 
    mSlidingTabLayout.setSelectedIndicatorColors(getResources().getColor(R.color.slidingcolor)); 
    mSlidingTabLayout.setCustomTabView(R.layout.tab_view, R.id.tv_tab); 
    mSlidingTabLayout.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { 
     @Override 
     public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 

     } 

     @Override 
     public void onPageSelected(int position) { 

     } 

     @Override 
     public void onPageScrollStateChanged(int state) { 

     } 
    }); 

    mSlidingTabLayout.setViewPager(mViewPager); 
    //Navigation Drawer 
    //Header 
    AccountHeader headerResult = new AccountHeaderBuilder() 
      .withActivity(this) 
      .withCompactStyle(false) 
      .withSavedInstance(savedInstanceState) 
      .withThreeSmallProfileImages(false) 
      .withHeaderBackground(R.drawable.header) 
      .build(); 

    //List Drawer 
    Drawer result = new DrawerBuilder() 
      .withActivity(this) 
      .withToolbar(toolbar) 
      .withDisplayBelowStatusBar(true) 
      .withActionBarDrawerToggleAnimated(true) 
      .withDrawerGravity(Gravity.LEFT) 
      .withSavedInstance(savedInstanceState) 
      .withAccountHeader(headerResult) 
      .withHasStableIds(true) 
      .withAccountHeader(headerResult) //set the AccountHeader we created earlier for the header 
      .addDrawerItems(//set item drawer 
        new PrimaryDrawerItem().withName("Home").withDescription("Beranda").withIcon(R.drawable.ic_home_black_48dp).withIdentifier(NAV_ID_FRAG_ONE).withSelectable(false), 
        new PrimaryDrawerItem().withName("Live TV").withDescription("Siaran Televisi").withIcon(R.drawable.ic_live_tv_black_48dp).withIdentifier(NAV_ID_FRAG_TWO).withSelectable(false), 
        new PrimaryDrawerItem().withName("Movies").withDescription("Film-film").withIcon(R.drawable.ic_local_movies_black_48dp).withIdentifier(NAV_ID_FRAG_THREE).withSelectable(false), 
        new ExpandableDrawerItem().withName("Categories").withLevel(2).withIdentifier(4).withSelectable(false).withSubItems(
          new SecondaryDrawerItem().withName("Action").withLevel(3).withIdentifier(2000), 
          new SecondaryDrawerItem().withName("Comedy").withLevel(3).withIdentifier(2001) 
        ), 
        new SectionDrawerItem().withName("Others"), 
        new SecondaryDrawerItem().withName("Account").withIcon(R.drawable.ic_account_box_black_48dp).withIdentifier(5).withSelectable(false), 
        new SecondaryDrawerItem().withName("About").withIcon(R.drawable.ic_info_black_48dp).withIdentifier(NAV_ID_ABOUT_ACTIVITY).withSelectable(false), 
        new SecondaryDrawerItem().withName("Logout").withIcon(R.drawable.ic_exit_to_app_black_48dp).withIdentifier(7).withSelectable(false) 
      ) 
      .withOnDrawerItemClickListener(new Drawer.OnDrawerItemClickListener() { 
       @Override 
       public boolean onItemClick(View view, int i, IDrawerItem drawerItem) { 
        Fragment fragment = null; 

        switch ((int) drawerItem.getIdentifier()) { 
         case NAV_ID_FRAG_ONE: 
          fragment = new HomeFragment(); 
          break; 
         case NAV_ID_FRAG_TWO: 
          fragment = new LiveFragment(); 
          break; 
         case NAV_ID_FRAG_THREE: 
          fragment = new MovieFragment(); 
          break; 
         case NAV_ID_ABOUT_ACTIVITY: 
          Intent intent = new Intent(MainActivity.this, AboutActivity.class); 
          startActivity(intent); 
          break; 
        } 

        return false; 
       } 
      }) 
      .withSelectedItem(1) 
      .withFireOnInitialOnClick(true) 
      // add the items we want to use with our Drawer 
      .build(); 

    new RecyclerViewCacheUtil<IDrawerItem>().withCacheSize(2).apply(result.getRecyclerView(), result.getDrawerItems()); 

} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.menu_main, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case R.id.action_settings: 
      // User chose the "Settings" item, show the app settings UI... 
      Intent in = new Intent("com.ajjunaedi.jmnanywhere.AboutActivity"); 
      startActivity(in); 
      return true; 

     default: 
      return super.onOptionsItemSelected(item); 
    } 
} 

ある}

+0

onItemClickメソッドのfragmnet変数は初期化されていますが使用されていません。 – Hamid

答えて

0
あなたが断片を置換/追加/削除するFragmentManagerを追加する必要があり

 FragmentManager fragmentManager = getSupportFragmentManager(); 
     fragmentManager.beginTransaction().replace(R.id.fragment,fragment).commit(); 

getSupportFragmentManager()=このアクティビティに関連付けられたフラグメントと対話するためのFragmentManagerを返します。

.beginTransaction()=このFragmentManagerに関連付けられたフラグメントに対して一連の編集操作を開始します。

R.id.fragmentは、フラグメントを配置するコンテナのIDです。詳細は

は、この記事を参照してください - What does FragmentManager and FragmentTransaction exactly do?

EDIT:あなたのswitch文の後にこれを追加します。私はこれがあなたが探している答えだと願っています。

これをXMLファイルに追加します。ベースラインの内側

<RelativeLayout 
    android:id="@+id/fragment" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" /> 

あなたの欲望に合わせてサイズを変更してください。または単にandroid:id="@+id/fragment"という行をベースラインに追加することもできます。

+0

私はこのR.id.fragmentを持っていません。どこに追加しますか? –

+0

xmlファイルのレイアウト内にレイアウト(線形/相対)を追加する必要があります。 –

+0

あなたの助けを感謝します:) @ mark.jon –

関連する問題