簡體   English   中英

屏幕旋轉時出現android.view.InflateException

[英]android.view.InflateException on screen rotation

我一直在努力使片段適用於項目,直到片段細節更改后我旋轉屏幕為止,片段都一切正常,當我在選擇后旋轉屏幕時,它崩潰並出現以下錯誤(我啟用了片段調試器(如果有幫助)

02-27 20:08:01.194: V/FragmentManager(32480): movefrom RESUMED: Detail{42311948 #0   id=0x7f0a0007}
02-27 20:08:01.194: V/FragmentManager(32480): movefrom RESUMED: HomeMenuItems{42314338 #1 id=0x7f0a0008}
02-27 20:08:01.194: V/FragmentManager(32480): movefrom RESUMED: ChoosePDFActivity{4234be08 #2 id=0x7f0a0007}
02-27 20:08:01.194: V/FragmentManager(32480): Saved state of Detail{42311948 #0 id=0x7f0a0007}: null
02-27 20:08:01.194: V/FragmentManager(32480): Saved state of HomeMenuItems{42314338 #1   id=0x7f0a0008}: Bundle[{android:view_state={16711681=android.view.AbsSavedState$1@416dbfb0,       16711682=android.view.AbsSavedState$1@416dbfb0,   16711683=android.view.AbsSavedState$1@416dbfb0, 16908298=AbsListView.SavedState{42359778       selectedId=-9223372036854775808 firstId=-1 viewTop=0 position=0 height=1424 filter=null   checkState=null}}}]
02-27 20:08:01.204: V/FragmentManager(32480): Saved state of ChoosePDFActivity{4234be08 #2 id=0x7f0a0007}: Bundle[{android:view_state={16908298=AbsListView.SavedState{4235cab8 selectedId=-9223372036854775808 firstId=-1 viewTop=0 position=0 height=514 filter=null checkState=null}, 2131361801=android.view.AbsSavedState$1@416dbfb0}}]
02-27 20:08:01.214: V/FragmentManager(32480): saveAllState: adding fragment #0: Detail{42311948 #0 id=0x7f0a0007}
02-27 20:08:01.214: V/FragmentManager(32480): saveAllState: adding fragment #1: HomeMenuItems{42314338 #1 id=0x7f0a0008}
02-27 20:08:01.214: V/FragmentManager(32480): saveAllState: adding fragment #2: ChoosePDFActivity{4234be08 #2 id=0x7f0a0007}
02-27 20:08:01.214: V/FragmentManager(32480): movefrom STARTED: Detail{42311948 #0 id=0x7f0a0007}
02-27 20:08:01.214: V/FragmentManager(32480): movefrom STARTED: HomeMenuItems{42314338 #1 id=0x7f0a0008}
02-27 20:08:01.214: V/FragmentManager(32480): movefrom STARTED: ChoosePDFActivity{4234be08 #2 id=0x7f0a0007}
02-27 20:08:01.214: V/FragmentManager(32480): movefrom STOPPED: Detail{42311948 #0 id=0x7f0a0007}
02-27 20:08:01.214: V/FragmentManager(32480): movefrom STOPPED: HomeMenuItems{42314338 #1 id=0x7f0a0008}
02-27 20:08:01.214: V/FragmentManager(32480): movefrom STOPPED: ChoosePDFActivity{4234be08 #2 id=0x7f0a0007}
02-27 20:08:01.214: V/FragmentManager(32480): movefrom ACTIVITY_CREATED: Detail{42311948 #0 id=0x7f0a0007}
02-27 20:08:01.214: V/FragmentManager(32480): movefrom CREATED: Detail{42311948 #0 id=0x7f0a0007}
02-27 20:08:01.214: V/FragmentManager(32480): Freeing fragment index Detail{42311948 #0 id=0x7f0a0007}
02-27 20:08:01.214: V/FragmentManager(32480): movefrom ACTIVITY_CREATED: HomeMenuItems{42314338 #1 id=0x7f0a0008}
02-27 20:08:01.214: V/FragmentManager(32480): movefrom CREATED: HomeMenuItems{42314338 #1 id=0x7f0a0008}
02-27 20:08:01.214: V/FragmentManager(32480): Freeing fragment index HomeMenuItems{42314338 #1 id=0x7f0a0008}
02-27 20:08:01.214: V/FragmentManager(32480): movefrom ACTIVITY_CREATED: ChoosePDFActivity{4234be08 #2 id=0x7f0a0007}
02-27 20:08:01.224: V/FragmentManager(32480): movefrom CREATED: ChoosePDFActivity{4234be08 #2 id=0x7f0a0007}
02-27 20:08:01.224: V/FragmentManager(32480): Freeing fragment index ChoosePDFActivity{4234be08 #2 id=0x7f0a0007}
02-27 20:08:01.244: V/FragmentManager(32480): Instantiated fragment Detail{42364658 #0 id=0x7f0a0007}
02-27 20:08:01.244: V/FragmentManager(32480): restoreAllState: active #0: Detail{42364658 #0 id=0x7f0a0007}
02-27 20:08:01.244: V/FragmentManager(32480): Instantiated fragment HomeMenuItems{42365038 #1 id=0x7f0a0008}
02-27 20:08:01.244: V/FragmentManager(32480): restoreAllState: active #1: HomeMenuItems{42365038 #1 id=0x7f0a0008}
02-27 20:08:01.254: V/FragmentManager(32480): Instantiated fragment ChoosePDFActivity{42365a28 #2 id=0x7f0a0007}
02-27 20:08:01.254: V/FragmentManager(32480): restoreAllState: active #2: ChoosePDFActivity{42365a28 #2 id=0x7f0a0007}
02-27 20:08:01.254: V/FragmentManager(32480): restoreAllState: added #0: Detail{42364658 #0 id=0x7f0a0007}
02-27 20:08:01.254: V/FragmentManager(32480): restoreAllState: added #1: HomeMenuItems{42365038 #1 id=0x7f0a0008}
02-27 20:08:01.254: V/FragmentManager(32480): restoreAllState: added #2: ChoosePDFActivity{42365a28 #2 id=0x7f0a0007}
02-27 20:08:01.254: V/FragmentManager(32480): moveto CREATED: ChoosePDFActivity{42365a28 #2 id=0x7f0a0007}
02-27 20:08:01.264: V/FragmentActivity(32480): onCreateView: id=0x7f0a0007 fname=ca.nait.myartego.Detail existing=ChoosePDFActivity{42365a28 #2 id=0x7f0a0007}
02-27 20:08:01.264: D/AndroidRuntime(32480): Shutting down VM
02-27 20:08:01.264: W/dalvikvm(32480): threadid=1: thread exiting with uncaught exception (group=0x41616ba8)
02-27 20:08:01.264: E/AndroidRuntime(32480): FATAL EXCEPTION: main
02-27 20:08:01.264: E/AndroidRuntime(32480): Process: com.artifex.mupdf, PID: 32480
02-27 20:08:01.264: E/AndroidRuntime(32480): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.artifex.mupdf/ca.nait.myartego.HomeActivity}: android.view.InflateException: Binary XML file line #34: Error inflating class fragment
02-27 20:08:01.264: E/AndroidRuntime(32480):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
02-27 20:08:01.264: E/AndroidRuntime(32480):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
02-27 20:08:01.264: E/AndroidRuntime(32480):    at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3738)
02-27 20:08:01.264: E/AndroidRuntime(32480):    at android.app.ActivityThread.access$900(ActivityThread.java:135)
02-27 20:08:01.264: E/AndroidRuntime(32480):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1202)
02-27 20:08:01.264: E/AndroidRuntime(32480):    at android.os.Handler.dispatchMessage(Handler.java:102)
02-27 20:08:01.264: E/AndroidRuntime(32480):    at android.os.Looper.loop(Looper.java:136)
02-27 20:08:01.264: E/AndroidRuntime(32480):    at android.app.ActivityThread.main(ActivityThread.java:5017)
02-27 20:08:01.264: E/AndroidRuntime(32480):    at java.lang.reflect.Method.invokeNative(Native Method)
02-27 20:08:01.264: E/AndroidRuntime(32480):    at java.lang.reflect.Method.invoke(Method.java:515)
02-27 20:08:01.264: E/AndroidRuntime(32480):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
02-27 20:08:01.264: E/AndroidRuntime(32480):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
02-27 20:08:01.264: E/AndroidRuntime(32480):    at dalvik.system.NativeStart.main(Native Method)
02-27 20:08:01.264: E/AndroidRuntime(32480): Caused by: android.view.InflateException: Binary XML file line #34: Error inflating class fragment
02-27 20:08:01.264: E/AndroidRuntime(32480):    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:713)
02-27 20:08:01.264: E/AndroidRuntime(32480):    at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
02-27 20:08:01.264: E/AndroidRuntime(32480):    at android.view.LayoutInflater.rInflate(LayoutInflater.java:758)
02-27 20:08:01.264: E/AndroidRuntime(32480):    at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
02-27 20:08:01.264: E/AndroidRuntime(32480):    at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
02-27 20:08:01.264: E/AndroidRuntime(32480):    at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
02-27 20:08:01.264: E/AndroidRuntime(32480):    at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:290)
02-27 20:08:01.264: E/AndroidRuntime(32480):    at android.app.Activity.setContentView(Activity.java:1929)
02-27 20:08:01.264: E/AndroidRuntime(32480):    at ca.nait.myartego.HomeActivity.onCreate(HomeActivity.java:16)
02-27 20:08:01.264: E/AndroidRuntime(32480):    at android.app.Activity.performCreate(Activity.java:5231)
02-27 20:08:01.264: E/AndroidRuntime(32480):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
02-27 20:08:01.264: E/AndroidRuntime(32480):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
02-27 20:08:01.264: E/AndroidRuntime(32480):    ... 12 more
02-27 20:08:01.264: E/AndroidRuntime(32480): Caused by: java.lang.IllegalStateException: Fragment ca.nait.myartego.Detail did not create a view.
02-27 20:08:01.264: E/AndroidRuntime(32480):    at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:314)
02-27 20:08:01.264: E/AndroidRuntime(32480):    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:685)
02-27 20:08:01.264: E/AndroidRuntime(32480):    ... 23 more

我的xml文件包含兩個片段:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:background="@color/app_background_color"
    tools:context=".MainActivity" >

    <ImageButton
        android:id="@+id/live_feed_button"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:background="@drawable/button_style"
        android:contentDescription="@string/live_feed"
        android:minHeight="200dp" 
        android:scaleType="fitXY"
        android:src="@drawable/img2"/>

    <View android:id="@+id/strut"
        android:layout_width="0dp"
        android:layout_height="0dp" 
        android:layout_centerHorizontal="true"/>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:weightSum="1.49" 
            android:layout_alignParentLeft="true"
            android:layout_below="@+id/live_feed_button"
            android:layout_alignLeft="@id/strut"
            android:gravity="right">

        <fragment
            android:id="@+id/detail"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="fill_parent"

            class="ca.nait.myartego.Detail" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:weightSum="3"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/live_feed_button" 
        android:layout_alignRight="@id/strut">

    <fragment
        android:id="@+id/list"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="fill_parent"

        class="ca.nait.myartego.HomeMenuItems" />
    </LinearLayout>
</RelativeLayout>

主頁活動:

 public class HomeActivity extends FragmentActivity
 {
    @Override
     protected void onCreate(Bundle savedInstanceState)
     {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_home);

     }

    @Override
    public void onBackPressed()
    {
        super.onBackPressed();
        overridePendingTransition(R.anim.push_left_in, R.anim.push_left_out);
    }
}

列表片段代碼:

public class HomeMenuItems extends ListFragment
    {
        // items on menu
        String[] menuItems =
        { "Catalogue", "Events", "Find Us", "Contact Us", "Professional Login" };
        boolean case_0 = false, case_1 = false, case_2 = false, case_3 = false,
                case_4 = false;

        @SuppressLint("NewApi")
        @Override
        public void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
        }

        @Override
        public void onActivityCreated(Bundle savedInstanceState)
        {
            super.onActivityCreated(savedInstanceState);
            setListAdapter(new ArrayAdapter<String>(getActivity(),R.layout.menu_item, menuItems));
            FragmentManager.enableDebugLogging(true);
        }

        @Override
        public void onListItemClick(ListView list, View v, int position, long id)
        {
            System.out.println("test");
            Fragment newFragment = null;
            FragmentManager fm = getFragmentManager();
            FragmentTransaction ft = fm.beginTransaction();

            switch (position)
            {
            case 0:
                if (!case_0)
                {
                    newFragment = new ChoosePDFActivity();
                    ft.setCustomAnimations(R.anim.push_left_in, R.anim.push_left_out);
                    ft.replace(R.id.detail, newFragment);
                    ft.disallowAddToBackStack().commit();

                    case_0 = true;
                    case_1 = false;
                    case_2 = false;
                    case_3 = false;
                    case_4 = false;
                }
                break;

            case 1:
                if (!case_1)
                {
                    case_1 = true;
                    newFragment = new EventsActivity();
                    ft.setCustomAnimations(R.anim.push_left_in, R.anim.push_left_out);
                    ft.replace(R.id.detail, newFragment);
                    ft.disallowAddToBackStack().commit();

                    case_0 = false;
                    case_2 = false;
                    case_3 = false;
                    case_4 = false;
                }
                break;

            case 2:
                if (!case_2)
                {
                    case_2 = true;
                    newFragment = new MapsActivity();
                    ft.setCustomAnimations(R.anim.push_left_in, R.anim.push_left_out);
                    ft.replace(R.id.detail, newFragment);
                    ft.disallowAddToBackStack().commit();

                    case_0 = false;
                    case_1 = false;
                    case_3 = false;
                    case_4 = false;
                }
                break;

            case 3:
                if (!case_3)
                {
                    case_3 = true;
                    newFragment = new ContactsActivity();
                    ft.setCustomAnimations(R.anim.push_left_in, R.anim.push_left_out);
                    ft.replace(R.id.detail, newFragment);
                    ft.disallowAddToBackStack().commit();

                    case_0 = false;
                    case_1 = false;
                    case_2 = false;
                    case_4 = false;
                }
                break;

            case 4:
                if (!case_4)
                {
                    case_4 = true;
                    newFragment = new LoginActivity();
                    ft.setCustomAnimations(R.anim.push_left_in, R.anim.push_left_out);
                    ft.replace(R.id.detail, newFragment);
                    ft.disallowAddToBackStack().commit();

                    case_0 = false;
                    case_1 = false;
                    case_2 = false;
                    case_3 = false;
                }
                break;
            }
        }

    }

這是細節片段

public class Detail extends Fragment{
    View view;
    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {
        return inflater.inflate(R.layout.detailfragment, container, false);
    }

}

看起來在這里解決了相同的問題:

碎片和旋轉屏幕問題

基本上,該問題是通過將Fragment動態添加到屏幕來解決的,而無需在XML中明確聲明。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM