2017-03-07 1 views
0

SO私は私がナビゲーション引き出して断片を開くことが許可され、このコードを持っていたが、それは活動を開くことができません。同じ機能(引き出しレイアウト付き)でフラグメントとアクティビティを開く方法は?

@SuppressWarnings("StatementWithEmptyBody") 
@Override 
public boolean onNavigationItemSelected(MenuItem item) { 
    int id = item.getItemId(); 
    Fragment fragment = null; 
    Class fragmentClass = null; 
    if (id == R.id.nav_home) { 
     Intent homeIntent = new Intent(this, MainActivity.class); 
     startActivity(homeIntent); //Doesn't Work 
    } else if (id == R.id.nav_contacts) { 
     fragmentClass = Contactos.class; //Works 
    } else if (id == R.id.nav_about) { 
     fragmentClass = Sobre.class; /Works 
    } else if (id == R.id.nav_settings){ 
     Intent settingIntent = new Intent(this, SettingsActivity.class); //Doesn't Work 
     startActivity(settingIntent); 
    } 
    try { 
     fragment = (Fragment) fragmentClass.newInstance(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

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

    DrawerLayout drawer = (DrawerLayout) findViewById(drawer_layout); 
    drawer.closeDrawer(GravityCompat.START); 
    return true; 
} 

だから私はいくつかの他のソリューションのためのWebを検索し、この新しいものと私は活動を開くことができますが、断片を開くことはできません:|

@SuppressWarnings("StatementWithEmptyBody") 
@Override 
public boolean onNavigationItemSelected(MenuItem item) { 
    int id = item.getItemId(); 
    Fragment fragment = null; 
    Class fragmentClass = null; 
    switch (id) { 
     case R.id.nav_home: 
      Intent homeIntent = new Intent(this, MainActivity.class); //Works 
      startActivity(homeIntent); 
      break; 
     case R.id.nav_contacts: 
      fragmentClass = Contactos.class; //Doesn't Work 
      break; 
     case R.id.nav_about: 
      fragmentClass = Sobre.class; //Doesn't Work 
      break; 
     case R.id.nav_settings: 
      Intent settingsIntent = new Intent(this, SettingsActivity.class); //Works 
      startActivity(settingsIntent); 
      break; 
    } 
    return false; 
} 

どうすれば両方開くことができますか? 助けを歓迎します:

+0

私の答えを確認してください。 – tahsinRupam

答えて

0

1)あなたは2番目のスニペットでフレグメントを交換していません。

2)onNavigationItemSelected()メソッドに対してを返しています。それがうまくいかない理由です。

@SuppressWarnings("StatementWithEmptyBody") 
     @Override 
     public boolean onNavigationItemSelected(MenuItem item) { 
     int id = item.getItemId(); 
     FragmentManager fm = getSupportFragmentManager(); 
     switch (id) { 
      case R.id.nav_home: 
       Intent homeIntent = new Intent(this, MainActivity.class); 
       startActivity(homeIntent); 
       break; 
      case R.id.nav_contacts: 
       fm.beginTransaction().replace(R.id.fl_content, new Contactos(), "Tag").commit(); 
       break; 
      case R.id.nav_about: 
       fm.beginTransaction().replace(R.id.fl_content, new Sobre(), "Tag").commit(); 
       break; 
      case R.id.nav_settings: 
       Intent settingsIntent = new Intent(this, SettingsActivity.class); //Works 
       startActivity(settingsIntent); 
       break; 
     } 
     DrawerLayout drawer = (DrawerLayout) findViewById(drawer_layout); 
     drawer.closeDrawer(GravityCompat.START); 

     return true; 
     } 

MainActivityに行く場合は、MainActivityにもfl_contentレイアウトがあることを確認してください。

+0

仕事をしていませんが、今はリンクがありません – alb

+0

編集してください。 – tahsinRupam

+0

はい、それは今働いて、すべての今、感謝を開くことができます。フラグメントがメインアクティビティの上に表示されているだけでレイアウトに問題があります – alb

関連する問題