2016-12-20 60 views
0

我正在使用一個具有3個片段和activity_main的android應用程序,所有這些都在導航抽屜中列出。問題是如何通過點擊導航抽屜中的一個項目來返回活動主體。通過點擊導航抽屜中的一項來返回活動主體

的啥子,我需要的基本思想是關閉所有打開的返回到主活動

這是我的代碼片段。

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

請添加代碼導航抽屜適配器的任何片段.. ? –

+1

您已經在MainActivity內...碎片在活動內。 –

+0

另外,這裏有很多重複的代碼。例如,'if(trans){}'你執行'beginTransaction()。replace',你已經在所有其他if-else語句中做過 –

回答

0

簡單的像你打電話片段..call你MainActivity,如果你想查詢什麼在視圖中可用

保持一個枚舉值或其它相關辦法..和更改相關的值在你加載,並檢查片段被加載或仍是主要觀點在MainActivity在MainActivity調用使用ENUM值存在視圖

所以,

如果一個片段風景被召回的MainActivity 否則只是滑動導航,因爲你已經在MainActivity的觀點沒有裝上它

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(); 
    }