如何获取当前活动并进行比较并采取一些措施?

时间:2016-01-07 22:19:22

标签: android android-fragments android-activity onbackpressed

我有2个活动和4个片段。我只是希望代码只在用户在MainActivity或welcome_fragment上时关闭(我已经这样命名)

我在下面写了一些伪代码来帮助你理解我的问题:

注意:此代码应使用MainActivity中的onBackPressed方法编写

if(currentactivity/currentfragment)==MainActivity/welcome_fragment)
{
    super.onBackPressed();
}

如何获取当前片段或活动的ID以将其与“R.id.welcome_fragment”(或其他内容)进行比较,然后才关闭应用程序?

2 个答案:

答案 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。请注意,更改导航栏按钮的行为通常是糟糕的用户体验,可能会导致卸载。