클래스 조각을 부풀리는 중 오류 발생
오류가 발생했습니다.
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>
가로 및 세로 모드로 전환하면 모든 것이 정상적으로 작동합니다.그러나 fragment를 클릭하고(fragment를 볼 수 있음) 다른 모드로 전환하면 오류가 발생합니다.제가 어떻게 해결할 수 있을지 아세요?여기서 답을 찾았지만 아무 것도 도움이 안 됐어요
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;
또한 조각을 사용하는 활동이 확장되는지 확인합니다.FragmentActivity
보통사대에신람▁▁ofActivity
,
import android.support.v4.app.FragmentActivity;
을 얻기 위해FragmentActivity
학급.
예적인android.view.InflateException: Binary XML file line: #... Error inflating class fragment
로 조작하면 발생할 수 있습니다.getActivity()
당파속에편의신▁before 앞에 있는 당신의 에.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>
태그. 이게 누군가에게 도움이 되었으면 좋겠어요.지엘.
저도 같은 문제가 있었습니다.저에게 해결책은 fragment Activity 내에서 contentView를 만들고 설정하는 super.on 순서였습니다.
다음 주문이 정상적으로 작동합니다.
super.onCreate(savedInstanceState);
setContentView(R.layout.fc_activity_list_profiles);
XML에 조각을 중첩할 수 없습니다.
기반 XML을 .<fragment>
동로로 안에 합니다.FragmentManager
그러면 fragment xml을 부풀리려고 하는 이상한 오류가 발생하기 시작합니다.
알고 보니, 이것은 지원되지 않습니다. 순수하게 이것을 통해 하면 잘 작동할 것입니다.FragmentManager
접근.
이 문제가 발생한 이유는 내부에 단편을 로드하는 중이었기 때문입니다.<DrawerLayout>
했으며, 로 인해 xml에서 했습니다.onCreateView()
내가 백스택을 터뜨렸을 때의 방법.
저는 당신이 직면한 것과 같은 문제를 겪고 있었습니다.위에 있는 어떤 팁도 저에게 도움이 되지 않았습니다.나중에 제가 해야 할 일은 수입품을 다음에서 수정하는 것뿐이라는 것을 알게 되었습니다.
import android.app.Fragment;
대상:
import android.support.v4.app.Fragment;
시도해 보셨습니까?
<fragment
android:name="de.androidbuch.activiti.task.TaskDetailsFragment"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
fragment의 onCreateView 메서드에서 발생한 예외가 없는지 확인합니다.이 메서드에서 예외가 발생하면 logcat은 예외의 정확한 세부 정보를 표시하지 않고 항상 다음 메시지를 표시합니다.
Caused by: java.lang.ClassNotFoundException: Didn't find class "android.view.fragment"
on path: DexPathList[[zip file "/data/app/com.package/base.apk"],
nativeLibraryDirectories=[/data/app/com.package/lib/arm64, /vendor/lib64, /system/lib64]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
만약 당신이TaskDetailsFragment
android.app.Fragment
거스름돈을 주다onCreateView()
.
조각에 표시할 보기를 반환하거나 레이아웃 인플레이터를 사용하여 레이아웃을 보기로 변환한 후 반환합니다.
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View mainview = inflater.inflate(R.layout.main, null);
return mainview;
}
이것이 효과가 있기를 바랍니다. :)
클래스 경로를 확인하십시오. xml class="de.sysbuch.activiti.task에 정의된 클래스 정의를 찾을 수 없는 뷰 인플레이터일 수 있습니다.작업 세부 정보 조각" 위의 경로가 잘못되었을 수 있습니다.
저는 다른 이유로 이 오류를 받았습니다.
재생산 단계:
~> 제 문제는 새로운 빈 애플리케이션을 만든 것입니다.
그런 다음 파일 ~> 새 파일 메뉴에서 사용자 정의 조각을 생성했습니다.
~> 레이아웃, 버튼 등을 추가하여 fragment를 커스터마이즈하는 작업을 진행하였습니다.
~> 애플리케이션을 생성할 때 나를 위해 생성된 auto generated activity_my.xml의 새 사용자 정의 fragment를 참조했습니다.이렇게 함으로써 XML에서 객체를 생성할 수 있었습니다.
다음은 File ~> New File Menu를 통해 사용자 정의 fragment를 생성할 때의 캐치입니다. 인터페이스 함수 스텁을 자동으로 생성하여 fragment 클래스 파일의 맨 아래에 배치합니다.
즉, MyActivity 클래스가 이 인터페이스를 구현해야 합니다.그렇지 않으면 xml의 fragment를 참조할 때만 위의 오류가 발생합니다.XML에서 fragment에 대한 참조를 완전히 제거하고 MyActivity.java 클래스 파일의 코드를 통해 fragment를 생성하면 Logcat은 문제를 자세히 설명하고 인터페이스에 대해 불평하는 보다 간결한 오류를 생성합니다.이는 프로젝트 템플릿 활동+단편에서 확인할 수 있습니다.그러나 <~해당 프로젝트 템플릿은 인터페이스 스텁을 생성하지 않습니다.
저는 스택 추적을 스크롤한 후 안드로이드에 대한 권한이 없음을 알게 되었습니다.허가.액세스_네트워크_상태
이 권한을 추가한 후 수정되었습니다.
세로 및 가로 모드용 레이아웃 파일이 따로 있고 항목을 클릭한 후 방향을 변경할 때마다 확장 오류가 발생하는 경우 레이아웃 파일 간에 불일치가 있을 가능성이 높습니다.
오류가 발생하면 가로 모드에서 항목을 클릭할 때만 해당됩니까? 세로 모드에서만 해당됩니까? 아니면 둘 다 해당합니까?작업 세부 정보 조각 활동에서 가로 모드와 세로 모드 간에 불일치가 있을 수 있는 레이아웃 파일을 사용합니까?
추하는경우를 .Fragment
에서, 은 xml에서, xml에서 실행하는 것을 도 있습니다.OnFragmentInteractionListener
의 신의에Activity
클래스. 그러면 인터페이스 구현이 문제를 해결할 것입니다.추하는경우를 .Fragment
동적으로, 즉 자바 클래스에서는 이것이 해결책이 아닙니다.IDE 자체가 필요한 인터페이스를 구현하지 않고 계속할 수 없기 때문입니다.
Androidx.fragment.app을 사용합니다.fragment 대신 fragmentContainerView입니다.다음은 예입니다.
<androidx.fragment.app.FragmentContainerView
android:id="@+id/fragmentDetails"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
class="de.androidbuch.activiti.task.TaskDetailsFragment"/>
이 경우 제 문제는 라이프사이클 후반에 실행되는 제 방법 중 하나에서 멍청한 널 포인터 예외가 발생하는 간단한 예였습니다.이로 인해 "클래스 fragment 부풀리기 오류" 예외가 발생했습니다.간단히 말해서, 가능한 원인에 대해 예외 스택 추적 아래쪽을 확인하는 것을 기억하십시오.
null 포인터 예외를 해결하면 fragment가 정상적으로 로드됩니다.
위에 언급된 해결책 중 어떤 것도 저에게 도움이 되지 않았습니다.로그에서 아래에 언급된 예외에 대한 세부 정보를 찾을 수 있었습니다.
06-19 16:20:37.885: E/AndroidRuntime(23973): Caused by: java.lang.RuntimeException: API key not found. Check that /meta-data/ android:name="com.google.android.maps.v2.API_KEY" android:value="your API key"/ is in the application element of AndroidManifest.xml.
저는 이것을 했고 제 코드는 작동했습니다!
<meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="AIzaSyCl1yGPZ3mpxxxxxxxAz2R-t7zcWVzrHUL9k"/>
</application>
아무것도 변경하지 않고 "fragment" 태그로 이동하려면
이렇게 하면,
<fragment
android:visibility="gone" (Visibility will not work, just helps in removing frag from xml viewer)(If you want the visibility to be gone make it in your fragment root element visibility=gone)
android:layout_width="match_parent"
android:layout_height="match_parent"
android:name="com.example.YOUR_FRAGMENT" (This is important)
/>
오류 유형이 동일하며 로그cat에 정확히 동일한 오류 메시지가 표시됩니다.는 있는에빌드다했습야니변경해를에 있는 .Project->Properties
는 구글 인 구글 시켰습니다.android-support-v4.jar
그리고.google-play-services.jar
하지만 나는 이것들을 포함하여 누락되었습니다.'Build class path'
에 시대에'Order and Export'
옵션메뉴▁. 여기에가 있는 것 .아마도 오류는 여기에 있을 것입니다.
빌드 클래스 경로에 라이브러리를 포함합니다.
클래스가 구축되는 순서도 오류를 유발할 수 있으므로 건물 경로의 순서를 다시 정렬해 보는 것이 좋습니다.다음 했을 때 가 사라졌습니다.'my_project_name/src'->'my_project_name/gen'->'Android Private Libraries'
마지막 장치에는 앞서 언급한 jar 파일이 들어 있습니다.
ListFragment를 사용할 때 이 오류가 발생했지만 ListView id는 list가 아닌 listView1이었습니다.
'ID 속성이 'Android인 ListView가 콘텐츠에 있어야 합니다.R.id .list'
http://developer.android.com/reference/android/app/ListFragment.html
AppCompativity Activity를 상속받으려면 다음과 같은 작업을 수행할 수 있습니다. xml 작업에서 다음과 같은 FrameLayout을 사용합니다.
<FrameLayout
android:id="@+id/result_fragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/progress_frame"/>
그리고 활동 중에.onCreate
-
final FragmentManager supportFragmentManager = getSupportFragmentManager();
FragmentTransaction ft = supportFragmentManager.beginTransaction();
ft.replace(R.id.result_fragment, fphResultActivityFragment, "result fragment");
ft.commitAllowingStateLoss();
저는 제 단편에 모든 것이 정상적으로 작동한다는 아이디를 추가했습니다.이에 앞서 위와 같이 매니페스트 파일을 변경했지만 오류를 해결하지 못했습니다.오류가 표시되면 오류가 발생한 이유를 알 수 있습니다.저의 경우, 오류 추적 중간에 fragment id가 누락된 것으로 나타났습니다.
<fragment
android:layout_width="0dp"
android:layout_weight="2"
android:layout_height="match_parent"
class="com.example.mydemofragmentapp.FoodListFragment"
android:id="@+id/none"/>
가능한 답변을 추가하고 싶습니다.자, 시작합니다.
제 상황은 프로젝트를 Java에서 Kotlin으로 변경한 다음 Navigation Component를 추가하는 것입니다.코틀린으로 이주한 후, 나는 다음을 추가합니다.nav_graph.xml
그런데 앱을 실행해 본 결과 부풀리기 오류가 발생했습니다.더 자세히 확인하고 다른 프로젝트와 비교한 후 내 프로젝트를 확인합니다.nav_graph.xml
가지고 있지 않은app:startDestination="@id/mainFragment"
를 한 후app:startDestination
오류가 사라졌고 제 프로젝트는 오류 없이 잘 실행됩니다.
nav_graph.xml
<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/nav_graph"
app:startDestination="@id/mainFragment">
<fragment
android:id="@+id/mainFragment"
android:name="fragment.MainFragment"
android:label="fragment_main"
tools:layout="@layout/fragment_main" />
</navigation>
그니마, 잊지세요러를 잊지 마세요.app:startDestination
.
xml 파일에서 태그 대신 를 사용합니다.인플레이터가 Android.app을 만들려고 합니다.API < 10에서 실패하는 조각입니다.따라서 다른 유형의 보기 그룹을 만들어야 합니다.
이것을 사용했는지 확인합니다.
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="AIzaSyBEwmfL0GaZmdVqdTxxxxxxxx-rVgvY" />
이거 말고요..
<meta-data
android:name="com.google.android.gms.version"
android:value="AIzaSyBEwmfL0GaZmdVqdTCvxxxxxxx-rVgvY" />
방금 같은 오류가 발생했습니다.저의 이유는 단편 수업의 가시성이었습니다.기본값으로 설정되었습니다. 공용이어야 합니다.
그 파편을 올려 주시겠습니까?onCreate
그리고.onCreateView
방법?나는 조각의 예외로 인해 발생한 것과 정확히 같은 예외를 가지고 있었습니다.onCreate
메소드, 내가 그 문제를 수정했을 때 클래스 fragment 오류를 수정했습니다.
Android 스튜디오에서 이 오류를 수신했습니다. 문제는 OnCreateView 기능의 코드가 있는 동안 내 조각이 상대적인 레이아웃을 가지고 있다는 것입니다.
mDrawerListView = (ListView) inflater.inflate(
R.layout.fragment_navigation_drawer, container, false);
당신의 코드가 같은 일을 하고 있습니까?
활동이 조각 활동 또는 앱 호환 활동을 확장하는지 확인합니다.
언급URL : https://stackoverflow.com/questions/6424853/error-inflating-class-fragment
'programing' 카테고리의 다른 글
SHA256 in swift (0) | 2023.09.01 |
---|---|
클릭 이벤트에서 요소를 요소 외부에 숨기려면 어떻게 해야 합니까? (0) | 2023.09.01 |
MariaDB 데이터베이스에 대한 쿼리 동기화 (0) | 2023.09.01 |
해시방 URL로 페이스북 공유/좋아요를 처리하는 방법은 무엇입니까? (0) | 2023.09.01 |
기본 키의 MySQL/MariaDB 느린 업데이트 (0) | 2023.09.01 |