当手机上的后退按钮而不是另一个按钮时应用程序关闭

时间:2013-05-08 15:59:07

标签: android android-activity android-4.0-ice-cream-sandwich back-button

当我使用Galaxy SII(Android 4.0.4)在某些活动中单击后退按钮时,我有一个应用程序转到homeScreen但它确实回到所有以前没有调用finish()方法的活动使用HTC EVO(Android 2.3.5)时。

我当时认为这是一个Android版本功能,现在我更安全了。我尝试在那些版本中使用模拟器,结果是一样的。这是一个Android版本的问题。

我在这里附上图片,因此可以清楚问题是什么。

Main Screen Second Activity enter image description here enter image description here

如果我在此位置单击后退按钮,则会将我从应用程序移至主屏幕。 那就是Galaxy S3

但是使用android 2.3.5,这就是它的工作原理。

enter image description here enter image description here enter image description here enter image description here

在2.3.5版本中,我点击后退,每个活动都回到前台。 关于这个问题的任何线索?

清单的代码:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.silm.sfa"
android:versionCode="2"
android:versionName="1.1" >

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="17" />

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

<application
    android:name="com.silm.sfa.app.App"
    android:allowBackup="true"
    android:icon="@drawable/sfa_new_version_logo"
    android:label="@string/app_name"
    android:theme="@android:style/Theme.NoTitleBar" >
    <activity
        android:name=".Splash"
        android:screenOrientation="portrait" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".Login"
        android:label="@string/app_name"
        android:screenOrientation="portrait"
        android:theme="@android:style/Theme.NoTitleBar" >
    </activity>
    <activity
        android:name=".Prefs"
        android:label="@string/config"
        android:screenOrientation="portrait" >
    </activity>
    <activity
        android:name=".Summary"
        android:label="@string/resumen"
        android:theme="@android:style/Theme.Dialog" 
        android:screenOrientation="portrait" >
    </activity>
    <activity
        android:name="com.jvra.signature.SignatureActivity"
        android:configChanges="orientation"
        android:theme="@android:style/Theme.Dialog"
        android:screenOrientation="portrait" >
    </activity>
    <activity
        android:name=".System"
        android:theme="@android:style/Theme.NoTitleBar"
        android:screenOrientation="portrait" >
    </activity>
    <activity
        android:name=".find.Finder"
        android:configChanges="orientation"
        android:theme="@android:style/Theme.NoTitleBar"
        android:screenOrientation="portrait" >
    </activity>
    <activity
        android:name=".Dashboard"
        android:theme="@android:style/Theme.NoTitleBar"
        android:screenOrientation="portrait" >
    </activity>
    <activity
        android:name=".Help"
        android:label="@string/help"
        android:screenOrientation="portrait" >
    </activity>
    <activity
        android:name=".bprocess.OrdersRecipe"
        android:label="@string/help"
        android:screenOrientation="portrait" >
    </activity>
    <activity
        android:name=".bprocess.DebitNotesProcess"
        android:label="@string/help"
        android:screenOrientation="portrait" >
    </activity>
    <activity
        android:name=".bprocess.CreditNotesProcess"
        android:label="@string/help"
        android:screenOrientation="portrait" >
    </activity>
    <activity
        android:name=".bprocess.StatementProcess"
        android:label="@string/help"
        android:screenOrientation="portrait" >
    </activity>
    <activity
        android:name=".bprocess.Products"
        android:label="@string/help"
        android:screenOrientation="portrait" >
    </activity>
    <activity
        android:name=".signature.SignatureActivity"
        android:label="@string/help"
        android:screenOrientation="landscape" >
    </activity>
</application>

</manifest>

后退按钮方法代码:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{

    if( event.getAction() == KeyEvent.ACTION_DOWN )
        if( keyCode == KeyEvent.KEYCODE_BACK )
        {
            DetailFragment detail = (DetailFragment) getSupportFragmentManager().findFragmentByTag(FIND_DETAIL_FRAGMENT);
            if( detail != null && detail.isVisible() )
                searchBar.setEnabledSearchButton(true);
        }
    return super.onKeyDown(keyCode, event);
}

2 个答案:

答案 0 :(得分:1)

试试这个;)

@Override       
public boolean onKeyDown(int keyCode, KeyEvent event) {

        if (keyCode == KeyEvent.KEYCODE_BACK) 
        {
            // Call main activity or whatever you want :)
        }

        return super.onKeyDown(keyCode, event);
    }

您必须在每项活动中调用此方法。

答案 1 :(得分:1)

您必须覆盖onBackPressed方法。只需将它放在onCreate方法

之前
@Override
public void onBackPressed() {
    Intent mIntent = new Intent(ActualActivity.this, PreviousActivity.class);
    ActualActivity.this.startActivity(mIntent);
    ActualActivity.this.finish();
}