在Android配置上更改应用程序正在重新启动

时间:2013-03-21 10:01:16

标签: android

我是android开发的新手。我正在编写一个应用程序,我的要求是当方向更改时,应用程序不会重新启动。以下是我在三星galaxy duos mobile中测试的示例应用程序。

我正在使用4.0.4 Android操作系统版本,而我的应用程序是在API级别8下开发的。

我尝试了以下方法:

android:configChanges="orientation|keyboard|keyboardHidden"
android:configChanges="orientation|keyboard"
android:configChanges="orientation"
android:configChanges="keyboard|keyboardHidden"
android:configChanges="orientation|keyboardHidden"

请帮帮我

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toast.makeText(getApplicationContext(), "this is starting",Toast.LENGTH_LONG).show(); 
    }   
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);

    if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT)
    {
        Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();
        //setContentView(R.layout.activity_main);
    }
     if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE)
    {
        Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();
        //setContentView(R.layout.activity_main );
    } 
    }


}

和我的主要文件

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.orientationtest"
    android:versionCode="1"
    android:versionName="1.0" >

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

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/title_activity_main" 
            android:configChanges="orientation|keyboard|keyboardHidden">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

4 个答案:

答案 0 :(得分:0)

android:configChanges="orientation|keyboard|keyboardHidden|screenSize"

Android 3.0+起,如果您希望系统管理您的方向更改,您还应添加screenSize

您应该在清单中设置targetSdkVersion版本>= 3.0。例如

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

答案 1 :(得分:0)

使用

android:configChanges="orientation|keyboardHidden"

在您的清单文件中

它对我有用

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name="com.stack.MainActivity" android:configChanges="orientation|keyboardHidden"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

答案 2 :(得分:0)

试试这个:

    <application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name">
    <activity
        android:name=".YourMainActivity"
        android:label="@string/title_activity_main"
        android:configChanges="keyboardHidden|orientation|screenSize"
        >

        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
 ....
 </application>

答案 3 :(得分:0)

添加

android:configChanges="orientation|keyboardHidden|screenSize"

在清单的活动声明中。