클래스 조각 팽창 오류

오류가 발생합니다

Unable to start activity ComponentInfo{de.androidbuch.activiti/de.androidbuch.activiti.task.Activity}: android.view.InflateException: Binary XML file line #11: Error inflating class fragment

세로 및 가로 모드를 통해 전환 할 때 조각을 사용하고 있습니다. 내 XML은 다음과 같습니다

 <LinearLayout android:id="@+id/mainLayout"
               android:orientation="horizontal"
               android:layout_width="fill_parent"
               android:layout_height="wrap_content" >

    <ListView android:id="@+id/android:list"
              android:layout_height="wrap_content"
              android:layout_width="fill_parent"/>

    <fragment android:id="@+id/fragmentDetails"
              android:layout_height="fill_parent"
              android:layout_width="fill_parent"
              class="de.androidbuch.activiti.task.TaskDetailsFragment"/>
</LinearLayout>

가로 및 세로 모드를 통해 전환하면 모든 것이 잘 작동합니다. 그러나 내 조각을 클릭하면 조각이 표시되고 다른 모드로 전환하면 오류가 발생합니다. 어떻게 해결할 수 있습니까? 여기에 몇 가지 답변이 있지만 이것들 중 어느 것도 나를 도와주지 못했습니다 …

06-21 14:55:05.600: ERROR/AndroidRuntime(7636): FATAL EXCEPTION: main
06-21 14:55:05.600: ERROR/AndroidRuntime(7636): java.lang.RuntimeException: Unable to start activity
ComponentInfo{de.androidbuch.activiti/de.androidbuch.activiti.task.Activity}:   android.view.InflateException: Binary XML file line #11: Error inflating class fragment
06-21 14:55:05.600: ERROR/AndroidRuntime(7636):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1736)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1752)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636):     at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3097)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636):     at android.app.ActivityThread.access$1600(ActivityThread.java:123)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:997)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636):     at android.os.Handler.dispatchMessage(Handler.java:99)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636):     at android.os.Looper.loop(Looper.java:126)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636):     at android.app.ActivityThread.main(ActivityThread.java:3998)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636):     at java.lang.reflect.Method.invokeNative(Native Method)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636):     at java.lang.reflect.Method.invoke(Method.java:491)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636):     at dalvik.system.NativeStart.main(Native Method)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636): Caused by: android.view.InflateException: Binary XML file line #11: Error inflating class fragment
06-21 14:55:05.600: ERROR/AndroidRuntime(7636):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:688)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636):     at android.view.LayoutInflater.rInflate(LayoutInflater.java:724)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636):     at android.view.LayoutInflater.rInflate(LayoutInflater.java:727)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636):     at android.view.LayoutInflater.inflate(LayoutInflater.java:479)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636):     at android.view.LayoutInflater.inflate(LayoutInflater.java:391)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636):     at android.view.LayoutInflater.inflate(LayoutInflater.java:347)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636):     at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:227)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636):     at android.app.Activity.setContentView(Activity.java:1771)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636):     at de.androidbuch.activiti.task.TaskActivity.onCreate(TaskActivity.java:83)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1048)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1700)
06-21 14:55:05.600: ERROR/AndroidRuntime(7636):     ... 12 more



답변

hdemirchian이 말했듯이 다음을 사용하십시오.

import android.support.v4.app.Fragment;

또한 조각을 사용하는 활동이 FragmentActivityregular 대신 확장되는지 확인하십시오 Activity.

import android.support.v4.app.FragmentActivity;

FragmentActivity수업 을받을 수 있습니다.


답변

호출 하기 전에 프래그먼트 내부에서 android.view.InflateException: Binary XML file line: #... Error inflating class fragment조작하면 예외 가 발생할 수 있습니다 . 이 경우 잘못된 활동 참조가 수신되어이를 신뢰할 수 없습니다.getActivity()onActivityCreated()

예를 들어 다음 패턴이 잘못되었습니다.

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState)
{
    final View view = inflater.inflate(R.layout..., container, false);

    Button button = getActivity().findViewById(R.id...);
    button.setOnClickListener(...); - another problem: button is null

    return view;
}

올바른 패턴 # 1

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState)
{
    final View view = inflater.inflate(R.layout..., container, false);

    Button button = view.findViewById(R.id...);
    button.setOnClickListener(...);

    return view;
}

올바른 패턴 # 2

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);

    Button button = getActivity().findViewById(R.id...);
    button.setOnClickListener(...);
}


답변

당신의 Activity확장을 확인하십시오 FragmentActivity.


답변

나는 같은 오류가 있었다. 나는 하루 종일 파고 있었지만, 나는이 문제에 대해 ~ 25 가지 해결책을 시도했다고 생각합니다. 오전 2시에 작동하지 않았으므로 앱 매니페스트 XML 에서이 줄이 누락되었음을 알았습니다.

<meta-data android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />

그 줄은 <application>태그 안에있었습니다 . 나는 이것이 누군가에게 도움이되기를 바랍니다. GL.


답변

나는 같은 문제가 있었다. 나를위한 해결책은 FragmentActivity 내에서 super.onCreate 및 setContentView의 순서였습니다.

다음 순서는 잘 작동합니다.

    super.onCreate(savedInstanceState);
    setContentView(R.layout.fc_activity_list_profiles);


답변

조각은 XML에 중첩 될 수 없습니다

이 방법을 열심히 배웠습니다. XML 레이아웃 기반 <fragment>태그를 (잠재적으로) 동적으로로드 된FragmentManager 조각 xml을 부풀 리려고 이상한 오류가 발생하기 시작합니다.

이것이 지원 되지 않는다는 것이 밝혀졌습니다. 순전히FragmentManager . 접근법을 .

<DrawerLayout>from xml 안에 조각을로드하려고했기 때문에이 문제 가 발생 onCreateView()하여 백 스택을 팝했을 때 메소드 에서 충돌이 발생했습니다 .


답변

나는 당신이 직면하는 것과 같은 문제를 겪고있었습니다. 상단의 도움말 중 어느 것도 도움이되지 않았습니다. 나중에, 내가해야 할 일은 수입품을 고치는 것입니다.

import android.app.Fragment;

에:

import android.support.v4.app.Fragment;