2016-12-20 21 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(); 
    }