Launcher Activity在我的新SDK中打开两次

时间:2014-11-19 06:46:30

标签: android eclipse android-studio adt android-sdk-2.3

我最近在eclipse和android studio中创建新的Android应用程序时遇到了问题。 我在eclipse和android studio中使用相同的SDK。

当我创建一个新的应用程序时,我只是运行它。启动器活动被加载两次。 意思是,我将MainActivity加载到另一个上面两次。 我的MainActivity的OnCreate()方法也被调用了两次。

代码如下:

的AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.sample"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="21"
    android:targetSdkVersion="22" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".MainActivity"
        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>

MainActivity.java

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    System.out.println("OnCreate Invoked");
}
}

输出

OnCreate Invoked
OnCreate Invoked

请帮我解决这个问题。 提前谢谢。

2 个答案:

答案 0 :(得分:5)

您似乎正在获得第一个活动的多个实例。

在第一项活动的清单中使用此项:

机器人:launchMode = “singleTop”

答案 1 :(得分:0)

如果我在onCreate中以编程方式设置了方向-我可以重现此问题。

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
    }

如果需要,可以在清单文件中设置活动方向。

       <activity
            android:name=".MainActivity"
            android:screenOrientation="landscape">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>