我最近在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
请帮我解决这个问题。 提前谢谢。
答案 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>