Android之前的活动即将到来

时间:2013-12-04 05:55:02

标签: android

我为此搜索了很多,但没有给出解决方案。我会向你解释一下这个场景:  我的应用程序是登录页面 - >用户验证页面 - >主页(主页有多个菜单和页脚 - 水平滚动视图)。应用程序登录仅在第一次或用户注销时发生。登录成功后,用户将导航到身份验证页面并完成登录活动。我的代码是

    Intent loginIntent = new Intent(Login.this,UserAu.class);
    loginIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    loginIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(loginIntent);
    finish();

成功验证后,用户将导航到应用程序主页,并再次完成验证活动。

    Intent proceedIntent = new Intent(UserAu.this,Home.class);
    proceedIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    proceedIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);             
    startActivity(proceedIntent);
    finish();

现在用户在主页中,他点击了菜单1,结果是活动A,然后是活动B.来自A。这些活动没有完成。注册按钮是页脚(这是一个扩展线性布局的类)和用户注销,当前活动已完成并使用

导航到登录屏幕
    Intent loginscreen=new Intent(context,Login.class);
    loginscreen.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    loginscreen.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    context.startActivity(loginscreen);
    ((Activity) context).finish();

我的问题发生在用户从登录页面按回按钮,导航到活动A. 我在登录类

上尝试过这个
    @Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
       moveTaskToBack(true);
            return true;
       }
    }

但是现在当用户再次获取应用程序时,它会导航到主页。如果用户按下后退按钮,应用程序将关闭,之后只会加载登录页面。我搜索了一个解决方案,但没有结果。 请给我一个解决方案。谢谢。

5 个答案:

答案 0 :(得分:0)

试试这个

<activity
            android:name="AccountSetting"
            android:launchMode="singleTop"
            android:screenOrientation="portrait" >
        </activity>

在清单文件中执行此条目

答案 1 :(得分:0)

发生此问题的原因是您正在完成登录活动和身份验证活动,然后您正在使用Intent.FLAG_ACTIVITY_CLEAR_TOPIntent.FLAG_ACTIVITY_NEW_TASK。 这些标志似乎不适用于已完成的活动

我的应用程序面临同样的问题,我所做的是没有完成这些活动,然后使用上面写的标记。现在,如果您没有完成这些活动,那么用户将从活动A导航回来,他将再次进入登录或身份验证活动。为此我解释了backPressed并在我的家庭活动中将其留空。

@Override
public void onBackPressed() {
    // TODO Auto-generated method stub
    //do nothing
}

用户将使用主页按钮导航回设备。

答案 2 :(得分:0)

我想..当你点击主页上的背面时...应用程序应该关闭..如果这是你想要的那么试试这个

 public boolean onKeyDown(int keyCode, KeyEvent event) 
{
    //Handle the back button
    if(keyCode == KeyEvent.KEYCODE_BACK) 
    {
        Intent intent = new Intent(Intent.ACTION_MAIN);
        intent.addCategory(Intent.CATEGORY_HOME);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(intent);
        return true;
    }
    else
    {
        return super.onKeyDown(keyCode, event);
    }
}

答案 3 :(得分:0)

试试这个

在登录界面中,我们将操作系统的主屏幕显示为tpo,这相当于movetasktoback

的操作
  @Override
 public void onBackPressed() {
    Intent intent = new Intent(Intent.ACTION_MAIN);
    intent.addCategory(Intent.CATEGORY_HOME);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(intent);
}

答案 4 :(得分:0)

在AndroidManifest.xml中试试这个。对于不应再次启动的活动。

<activity
        ....
        android:excludeFromRecents="true"
        android:exported="true"
        android:launchMode="singleTop"
</activity>