java在片段中被压回运行主活动中的函数
我有一个调用片段的活动,如下所示:
主要活动中的导航抽屉:
@SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(MenuItem item) {
// Handle navigation view item clicks here.
int id = item.getItemId();
安卓.app.FragmentManager fragmentManager = getFragmentManager();
if(id == R.id.nav_jobs_layout){
fragmentManager.beginTransaction()
.replace(R.id.content_frame, new JobsFragment())
.addToBackStack("Jobs")
.commit();
}else if(id == R.id.nav_shipments_out){
fragmentManager.beginTransaction()
.replace(R.id.content_frame, new ShipmentsOutFragment())
.addToBackStack("ShipmentsOut")
.commit();
}else if(id == R.id.logout){
SharedPreferences preferences = getSharedPreferences("MyPreferences", Context.MODE_PRIVATE);
Authentication auth = new Authentication(preferences);
auth.logout();
Intent intent = new Intent(MainActivity.this, LoginActivity.class);
startActivity(intent);
}
}
当我点击发货时,它会打开我的发货片段,在那里我有一个发货列表供用户选择。根据选择,我打开另一个片段,它将显示在那里。这是在这里完成的:
ShipmentFragment:
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Shipment shipment = shipments.get(position);
安卓.app.FragmentManager fragmentManager = getFragmentManager();
ShipmentsOutDetailsFragment newFragment = new ShipmentsOutDetailsFragment();
newFragment.shipment = shipment;
fragmentManager.beginTransaction()
.replace(R.id.content_frame, newFragment)
.addToBackStack("Shipments")
.commit();
}
});
在下一个片段中,我将显示所选装运的详细信息。当您单击该片段时,问题就出现了。就像每次我重新加载基本装运时加载第一个片段一样
单击“上一步”时,似乎会运行onBackPressed函数,如图所示,该函数位于主活动中。我怎样才能阻止它运行?是否有一个覆盖我可以放进任何一个片段
这是主活动中的恼人的onBackPressed,我不想在我点击第二个片段时运行它,但在第一个片段上运行
@Override
public void onBackPressed() {
DrawerLayout drawer = findViewById(R.id.drawer_layout);
Log.v("BackPressed", "This function has been run");
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else {
super.onBackPressed();
this.finish();
}
}
# 1 楼答案
尝试如下
# 2 楼答案
您可以声明两个feild:
另一个
variable
可以保存当前的fragment
显示:然后在每次更改
fragment
时更改currentFragmentShwon
的值:然后在ide
onBackPressed()
函数中,您可以执行以下操作:这也许不是最好的解决方案,但我希望这能有所帮助