[ナビゲーションドロワー]アイテムをクリックするとすぐに[マイフラグメント]が開きます。ナビゲーションドロワーが閉じた後に開きたいのですが。
ナビゲーションドロワーサポートライブラリでドロワーを閉じた後、フラグメントを開くにはどうすればよいですか?
private void initNavigationView()
{
navigationView = (NavigationView) findViewById(R.id.navigation_view);
drawerLayout = (DrawerLayout) findViewById(R.id.navigation_drawer);
drawerToggle = new ActionBarDrawerToggle(this, drawerLayout, R.string.nav_open, R.string.nav_close) {
@Override
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
invalidateOptionsMenu();
}
@Override
public void onDrawerClosed(View drawerView) {super.onDrawerClosed(drawerView)
}
};
drawerLayout.post(new Runnable() {
@Override
public void run() {
drawerToggle.syncState();
}
});
drawerToggle.setDrawerIndicatorEnabled(true);
drawerLayout.setDrawerListener(drawerToggle);
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(MenuItem menuItem) {
switch (menuItem.getItemId()) {
case R.id.tentang:
break;
case R.id.keluar:
finish();
break;
}
selectDrawerItem(menuItem);
return true;
}
private void selectDrawerItem(MenuItem menuItem)
{
Fragment fragment = null;
Class fragmentClass = null;
switch (menuItem.getItemId())
{
case R.id.fragment_home:
fragmentClass = com.wahyuapps.benux.fragment.fragmentHome.class;
break;
case R.id.fragment_distro_linux:
fragmentClass = com.wahyuapps.benux.fragment.fragmentDistroLinux.class;
break;
}
try {
fragment = (Fragment)fragmentClass.newInstance();
}catch(Exception e){
e.printStackTrace();
}
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction().replace(R.id.fragment_content, fragment).commit();
menuItem.setChecked(true);
setTitle(menuItem.getTitle());
drawerLayout.closeDrawers();
}
});
}
これにはどのようなコードを入れますか?引き出しが閉じているときにフラグメントを開く方法は?私の場合、アイテムをクリックするとフラグメントが開きました。引き出しを閉じた後、少し遅れてフラグメントを開きたいです。
android.support.v4.app.FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
TestingFragment hello = new TestingFragment();
fragmentTransaction.add(R.id.mainlayout, hello, "HELLO");
fragmentTransaction.commit();
これにより、フラグメントを呼び出すことができます...そしてR.id.mainlayoutはアクティビティのルートレイアウトです。
編集2
少し遅れてフラグメントを開く
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction().replace(R.id.fragment_content, fragment).commit();
menuItem.setChecked(true);
setTitle(menuItem.getTitle());
}
}, 1000);
ハンドラーにこのインポートを選択します- import android.os.Handler;
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加