2016-12-20 2 views
0

3つのフラグメントとactivity_mainを持つアンドロイドアプリで作業していますが、すべてがナビゲーションドロワーにリストされています。問題は、ナビゲーション・ドロワーの項目をクリックして、アクティビティー・メインに戻る方法です。ナビゲーションドロワーの項目をクリックしてアクティビティーメインに戻ります

私は必要WAHTの基本的な考え方は、これが私のコードでメイン

活動に戻ることが開いているすべての断片を閉じることです。あなたはフラグメントが..call呼び出すよう

if(id==R.id.taximetro){ 
    //this is my activity_main that i need to return 
     trans = true; 
    } else if (id == R.id.factura) { 
     fragment=new frmFactura(); 
     getSupportFragmentManager().beginTransaction().replace(R.id.content_main, fragment).addToBackStack(null).commit(); 
     trans = true; 
    } else if (id == R.id.dispBlue) { 
     fragment=new frmDispositivos(); 
     getSupportFragmentManager().beginTransaction().replace(R.id.content_main, fragment).addToBackStack(null).commit(); 
     trans = true; 
    } else if (id == R.id.ayuda) { 
     fragment=new frmAyuda(); 
     getSupportFragmentManager().beginTransaction().replace(R.id.content_main, fragment).addToBackStack(null).commit(); 
     trans = true; 
    } 
    if (trans) { 
     getSupportFragmentManager().beginTransaction().replace(R.id.content_main, fragment).commit(); 
     item.setCheckable(true); 
     getSupportActionBar().setTitle(item.getTitle()); 
    } 
    //getSupportFragmentManager().beginTransaction().replace(R.id.content_main, fragment).addToBackStack(null).commit(); 
    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    drawer.closeDrawer(GravityCompat.START); 
    return true; 
} 
+0

にロードされた任意のフラグメントなしMainActivityのビューに既にあるので、ちょうどナビゲーションをスライドさせ、他のあなたのMainActivity を思い出すロードされている場合は、ナビゲーションドロワーアダプタのコードを追加してください。.. ? –

+1

あなたはすでにMainActivity ...内にいます。フラグメントはアクティビティ内にあります。 –

+0

また、ここには重複したコードがたくさんあります。たとえば、if(trans){} 'は、他のすべてのif-else文で既に行った' beginTransaction()。replace'を実行します –

答えて

0

シンプルあなたMainActivityビューでいただきました利用可能チェックしたい場合は

関連の値を変更..and ENUM値または他の関連方法を保ちますロードしたビューを確認してフラグメントをチェックするか、MainActivityコールのENUM値を使用してMainActivityにメインビューが存在する

so、

フラグメントビューは、あなたがそれ

if(id==R.id.taximetro){ 
// call your activity again if you want you can check that a fragment view is loaded or not and do changes only when you need if there is a fragment view loaded.. or simply recall it 
Intent intent = new Intent(this, MainActivity.class); 
startActivity(intent); 
finish(); 
    } 
関連する問題