按下后退按钮时所有活动都反转

时间:2014-02-25 10:37:37

标签: android android-intent

在我的项目中,我创建了几个课程,我可以从一个活动转到另一个活动,但问题是当我按下菜单时所有活动都反转我不想要那个!下面是清单文件:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="bones.samples.android"
  android:versionCode="1"
  android:versionName="1.0">
<application android:label="@string/app_name" android:icon="@drawable/icon48x48" android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
 <activity android:label="@string/app_name" android:screenOrientation="landscape" android:name=".stage">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
<activity android:name="LevelOne" android:screenOrientation="landscape" ></activity>

<activity android:name="dialogue" android:theme="@android:style/Theme.Dialog" ></activity>
<activity android:name="FailDialogue" android:theme="@android:style/Theme.Dialog" ></activity>

<activity android:name="LevelTwo" android:screenOrientation="landscape" ></activity>
<activity android:name="LevelThree" android:screenOrientation="landscape" ></activity>

</application>

<uses-sdk android:minSdkVersion="10" />
<supports-screens
        android:smallScreens="true"
        android:normalScreens="true"
        android:largeScreens= "true"
        android:anyDensity="true"
/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.VIBRATE"/>
</manifest> 

我希望当我处于leveltwo或dilogeue活动并按回按钮时,它会直接进入舞台活动,但不会反向进行所有活动。

4 个答案:

答案 0 :(得分:1)

如果您在不调用完成的情况下调用一个又一个活动,则活动将保留在后台堆栈中以供进一步访问。

如果您不想在用户按下时显示活动,请在调用所需活动后继续调用finish方法。

对于Ex: -

Intent intent =new Intenet(this, NextActivity.class);
startActivity(intent);
finish();

这将关闭当前活动并开始下一个活动。现在,当用户按下时,它将比此活动更早地进入活动,您的应用程序将关闭。

如果您想要参加特定活动,可以覆盖onBackPressed方法并调用特定活动。

答案 1 :(得分:0)

使用:

YourActivity.this.finish() 

在调用intent到下一个活动之后,对于您不希望在BackPress上显示的所有活动。

如果以上操作不可行,您可以定义上导航的父活动:

从Android 4.1(API级别16)开始,您可以通过在元素中指定android:parentActivityName属性来声明每个活动的逻辑父级。

 <activity
        android:name="com.example.myfirstapp.DisplayMessageActivity"
        android:label="@string/title_activity_display_message"
        android:parentActivityName="com.example.myfirstapp.MainActivity" >
        <!-- Parent activity meta-data to support 4.0 and lower -->
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.example.myfirstapp.MainActivity" />
    </activity>

This is what the Docs say

答案 2 :(得分:0)

将此用于Manifest ...

android:noHistory="true"

如下......

<activity android:name="LevelOne" android:screenOrientation="landscape"
          android:noHistory="true" ></activity>

<activity android:name="dialogue" android:theme="@android:style/Theme.Dialog"
          android:noHistory="true" ></activity>
<activity android:name="FailDialogue" android:theme="@android:style/Theme.Dialog"
          android:noHistory="true" ></activity>

当另一个Activity从此Activity启动时,此属性将从Activity中删除当前Activity Stack ...因此,当您按下后退按钮时,它将不会返回到之前的Activity。

答案 3 :(得分:0)

startActivity(CurrentActivity.this,NextActivity.class);
        finish();

或  在清单文件上设置标志

阅读以下主题以获取更多信息

http://developer.android.com/guide/components/tasks-and-back-stack.html

Use fragment。你可以替换片段。最后你可以完成这项活动。