2017-02-08 5 views
-3

私はすでに使用してナビゲーションドロワークリックで作業断片を持っている:航海引き出しのアクティビティ内のフラグメントを実装する方法

public boolean onNavigationItemSelected(MenuItem item) { 
int id = item.getItemId(); 
if (id == R.id.nav_camera) { 
// desired fragment to load 
} 

何私が欲しいのは、私がアプリを開くと、まず最初に、ユーザがすでにログインしているかどうかを確認することです共有プリファレンスを使用して行うことができます。はいの場合は、正常に動作しているアプリのメインのホームページを開きます。しかし、彼がいない場合、私は、ログイン断片ページを表示したい。 ナビゲーション・ドロワー・アクティビティーを使用してプロジェクトを作成するときに提供されるアクティビティーのみでこれを実現したいと思います。すべてのソリューション?
プロジェクト内のアクティビティ: 1.ホームアクティビティは主なアクティビティです。 2.ユーザがナビゲーションドロワリストをクリックしたときにフラグメントを管理するだけの内部アクティビティ。

答えて

0

このようにそれを実行します。

Fragment fragment = null; 
if(userIsLoggedIn(){ //Check from SharedPreference 
     fragment = new MainFragment(); 
} else { 
     fragment = new LoginFragment(); 
} 

FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
      fragmentTransaction.replace(R.id.container, fragment, CURRENT_TAG); 
      fragmentTransaction.commitAllowingStateLoss(); 
0

@Override 
public boolean onNavigationItemSelected(MenuItem item) { 
    // Handle navigation view item clicks here. 
    int id = item.getItemId(); 

    Fragment fragment = null; 

    switch (id) { 
     case R.id.nav_camera: 
      fragment = new CameraFragment(); 
      break; 

     default: 
      break; 
    } 

    if (fragment != null) { 
     FragmentManager fragmentManager = getSupportFragmentManager(); 
     fragmentManager.beginTransaction().replace(R.id.main, fragment).commit(); 
     assert drawer != null; 
     drawer.closeDrawer(GravityCompat.START); 
    } 
    return true; 
} 
、これを試してみてください
関連する問題