Я создаю приложение и хочу включить фрагменты в пример действия «Ящик навигации» из Android.По умолчанию он генерирует мне макет activity_main, который включает макет app_bar_main с:
<include
layout="@layout/app_bar_main"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
А внутри действия app_bar_main включает в себя другой макет в include
:
<android.support.design.widget.CoordinatorLayout
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:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".UI.MainActivity">
<android.support.design.widget.AppBarLayout
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:theme="@style/AppTheme.AppBarOverlay">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay"/>
</android.support.design.widget.AppBarLayout>
<include layout="@layout/content_main"/>
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="@dimen/fab_margin"
app:srcCompat="@android:drawable/ic_dialog_email"/>
Проблема возникает, когда я помещаю свой Fragment
в поле include:
<include layout="@layout/content_main"/>
Заменяется на:
<fragment
android:name="com.example.urbandictionary.SearchFragment"
android:id="@+id/fSearch"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
Я думал, что это должно работать, но оно ломается, когда оновходит в MainActivty:
setContentView(R.layout.activity_main)
Похоже, ошибка пытается добавить что-то в main thread
к некоторому List
:
public void registerOnActivityPausedListener(Activity activity,
OnActivityPausedListener listener) {
synchronized (mOnPauseListeners) {
ArrayList<OnActivityPausedListener> list = mOnPauseListeners.get(activity);
if (list == null) {
list = new ArrayList<OnActivityPausedListener>();
mOnPauseListeners.put(activity, list);
}
list.add(listener);
}
}
И прерывается, когда он сделалlist.add(listener)
Журналы:
2019-06-14 11: 39: 52.350 15257-15257 / com.example.urbandictionary E / AndroidRuntime: ИСКЛЮЧИТЕЛЬНОЕ ИСКЛЮЧЕНИЕ: основной процесс: com.example.urbandictionary, PID: 15257 java.lang.RuntimeException: невозможно запустить действие ComponentInfo {com.example.urbandictionary / com.example.urbandictionary.UI.MainActivity}: android.view.InflateException: строка двоичного файла XML № 12:Строка # 26 двоичного XML-файла: Ошибка надувания класса fragment в android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2665) в android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2726) в android.app.ActivityThread.-wrap12 (ActivityThread.java) в android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1477) на android.os.Handler.dispatchMessage (Handler.java:102) на android.os.Looper.loop (Looper.java:154) на android.app.ActivityThread.main(ActivityThread.java:6126) в java.lang.reflect.Method.invoke (собственный метод) в com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:886) в com.android.internal.os.ZygoteInit.main (ZygoteInit.java:776) Вызывается: android.view.InflateException: строка двоичного файла XML # 12: строка двоичного файла XML # 26: ошибка раздувания фрагмента класса. Вызывается: android.view.InflateException: двоичный файл XMLстрока № 26: ошибка надувания фрагмента класса. Причина: java.lang.RuntimeException: com.example.urbandictionary.UI.MainActivity@83a791c должна реализовывать OnFragmentInteractionСлушатель в com.example.urbandictionary.SearchFragment.onAttach (SearchFragment.kt: 58) в android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManager.java:1404) в android.support.v4.app.FragmentManagerompl.m.FragmentManager.java:1684) в android.support.v4.app.FragmentManagerImpl.addFragment (FragmentManager.java:1930) в android.support.v4.app.FragmentManagerImpl.onCreateView (FragmentManager.java:3745ort) в android.su4su.app.) в android.view.LayoutInflater.createViewFromTag (LayoutInflater.java:777) в android.view.LayoutInflater.createViewFromTag (LayoutInflater.java:727) в android.view.LayoutInflater.rInflate (LayoutInflater.java: at8: android8).LayoutInflater.rInflateChildren (LayoutInflater.java:821) в android.view.LayoutInflater.parseInclude (LayoutInflater.java:994) в android.view.LayoutInflater.rInflate (LayoutInflater.java:854) в android.view.LayoutInflater.rInflateChildren (LayoutInflater.java:821ayayfla.flain (flainInfla.LateInfla.LateInfla.LayInInter.LateInfla.LayInInter.LateInfla.LayInInter.LateInfla.LayInInter.LateInfla.LayInInter.LateInflater.viewIn.ter.Interin.flater (inline.flater (view)..java: 518) в android.view.LayoutInflater.inflate (LayoutInflater.java:426) в android.view.LayoutInflater.inflate (LayoutInflater.java:377) в android.support.v7.app.AppCompatDelegateImpl.setConlmpl.Java: 469)на android.support.v7.app.AppCompatActivity.setContentView (AppCompatActivity.java:140)
в com.example.urbandictionary.UI.MainActivity.onCreate (MainActivity.kt: 21)
на android.app.Activity.performCreate (Activity.java:6679)
на android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1119)
на android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2618)
на android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2726)
на android.app.ActivityThread.-wrap12 (ActivityThread.java)
на android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1477)
на android.os.Handler.dispatchMessage (Handler.java:102)
на android.os.Looper.loop (Looper.java:154)
на android.app.ActivityThread.main (ActivityThread.java:6126)
в java.lang.reflect.Method.invoke (родной метод)
на com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:886)
на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:776)