我有2个活动和4个片段。我只是希望代码只在用户在MainActivity或welcome_fragment上时关闭(我已经这样命名)
我在下面写了一些伪代码来帮助你理解我的问题:
注意:此代码应使用MainActivity中的onBackPressed方法编写
if(currentactivity/currentfragment)==MainActivity/welcome_fragment)
{
super.onBackPressed();
}
如何获取当前片段或活动的ID以将其与“R.id.welcome_fragment”(或其他内容)进行比较,然后才关闭应用程序?
答案 0 :(得分:0)
我不确定我是否理解了MainActivity"在onBackPressed
中覆盖MainActivity
的要求确保它只在那里运行。就welcome_fragment
而言,您可以这样做:
public class MainActivity extends ... {
@Override
public void onBackPressed(){
final Fragment currentFragment = getSupportFragmentManager().findFragmentById(R.id.primary_content);
if (WelcomeFragment.class.isInstance(currentFragment)) {
// The current fragment is a WelcomeFragment. Do something here...
super.onBackPressed();
}
}
}
将R.id.primary_content
替换为您的片段容器的ID,将WelcomeFragment
替换为您的welcome_fragment实际的类。
答案 1 :(得分:0)
您应该拨打super.onBackPressed()
的唯一地方是覆盖onBackPressed()
。如果该覆盖位于MainActivity
,并且您尚未展开MainActivity
,则无需测试正在运行的活动。
听起来你真正想做的就是覆盖其他活动中的onBackPressed()
并让不调用super。请注意,更改导航栏按钮的行为通常是糟糕的用户体验,可能会导致卸载。