我有我的应用程序,其中包括一个活动和2个片段(android.support.v4.app.Fragment)的一个很奇怪的问题。
问题是,当我转动我的平板电脑:应用程序崩溃的时候了。
前几天,一切都工作正常,但我不得不改变包名,扔了一些错误,但我设法改正。 问题之后即出现了,但我就是找不到在哪里是错误。 这里是logcat的我得到的应用程序被破坏之后,重新启动,恢复和创建:
10-08 17:00:14.930: D/dalvikvm(18155): GC_CONCURRENT freed 394K, 8% free 7792K/8455K, paused 1ms+4ms
10-08 17:00:14.930: D/AndroidRuntime(18155): Shutting down VM
10-08 17:00:14.930: W/dalvikvm(18155): threadid=1: thread exiting with uncaught exception (group=0x40bee1f8)
10-08 17:00:14.938: E/AndroidRuntime(18155): FATAL EXCEPTION: main
10-08 17:00:14.938: E/AndroidRuntime(18155): java.lang.IllegalStateException: No activity
10-08 17:00:14.938: E/AndroidRuntime(18155): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1070)
10-08 17:00:14.938: E/AndroidRuntime(18155): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1065)
10-08 17:00:14.938: E/AndroidRuntime(18155): at android.support.v4.app.FragmentManagerImpl.dispatchResume(FragmentManager.java:1854)
10-08 17:00:14.938: E/AndroidRuntime(18155): at android.support.v4.app.FragmentActivity.onResumeFragments(FragmentActivity.java:431)
10-08 17:00:14.938: E/AndroidRuntime(18155): at android.support.v4.app.FragmentActivity$1.handleMessage(FragmentActivity.java:90)
10-08 17:00:14.938: E/AndroidRuntime(18155): at android.os.Handler.dispatchMessage(Handler.java:99)
10-08 17:00:14.938: E/AndroidRuntime(18155): at android.os.Looper.loop(Looper.java:137)
10-08 17:00:14.938: E/AndroidRuntime(18155): at android.app.ActivityThread.main(ActivityThread.java:4514)
10-08 17:00:14.938: E/AndroidRuntime(18155): at java.lang.reflect.Method.invokeNative(Native Method)
10-08 17:00:14.938: E/AndroidRuntime(18155): at java.lang.reflect.Method.invoke(Method.java:511)
10-08 17:00:14.938: E/AndroidRuntime(18155): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)
10-08 17:00:14.938: E/AndroidRuntime(18155): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
10-08 17:00:14.938: E/AndroidRuntime(18155): at dalvik.system.NativeStart.main(Native Method)
这个问题源于FragmentManager但是为什么,我不知道,因为我没有任何细节。 我想一个解决方案,我发现在这个网站,以获得更多的信息,通过捕获未捕获的异常,但我得到的结果是一样的logcat的一再重复,直到某种内存不足的错误发生(在logcat中太多的字符串)。
我活动的布局是以下之一,它与Android生命周期的效果很好,但不能与屏幕旋转:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:id = "@+id/mainview"
tools:context=".MyActivity" >
<fragment
android:id="@+id/missionFragment"
android:layout_width="350dip"
android:layout_height="match_parent"
android:layout_marginTop="?android:attr/actionBarSize"
android:name="com.xxx.xxx.MissionFragment">
</fragment>
<fragment
android:id="@+id/mapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:name="com.xxx.xxx.MapFragment">
</fragment>
</LinearLayout>
清单是正确的有:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.xxx.xxx"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="11" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-feature
android:glEsVersion="0x00020000"
android:required="true" />
<application
android:icon="@drawable/logo"
android:label="@string/app_name" >
<activity
android:name=".MySIGActivity"
android:label="@string/app_name"
android:windowSoftInputMode="stateHidden" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
如果任何人有哪里会出错来了什么想法,对Android的哪个生命周期的方法,这将受到欢迎!
谢谢。
更新1.1:这是我的主要活动的onCreate方法:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
context = getApplicationContext();
currentEtape = 1;
// Set up the action bar.
final ActionBar actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
// Désactiver l'affichage du titre de l'application et son icône
actionBar.setDisplayShowHomeEnabled(true);
actionBar.setDisplayShowTitleEnabled(true);
setContentView(R.layout.main);
SharedPreferences prefs = getPreferences(0);
trackingGPS = prefs.getBoolean("trackingGPS", false);
if(trackingGPS){
TextView viewTrackingActive = (TextView)findViewById(R.id.textview_notif_tracking);
viewTrackingActive.setText(this.getString(R.string.active));
viewTrackingActive.setTextColor(Color.parseColor("#99CC00"));
}
else{
TextView viewTrackingDesactive = (TextView)findViewById(R.id.textview_notif_tracking);
viewTrackingDesactive.setText(this.getString(R.string.desactive));
viewTrackingDesactive.setTextColor(Color.parseColor("#CC0000"));
}
// No interaction with Fragment or Activity classes in these methods
instanciateLayersDialog();
instanciateBasemapDialog();
}
和方法的onResume:
public void onResume(){
super.onResume();
SharedPreferences prefs = getPreferences(0);
trackingGPS = prefs.getBoolean("trackingGPS", false);
System.out.println("activity resume");
}