Сбой приложения при загрузке фрагмента при запуске - PullRequest
0 голосов
/ 07 ноября 2018

Я сейчас изучаю Android, и в моем текущем проекте я использую фрагмент для загрузки стартовой страницы.

Вот мой FrameLayout:

 <FrameLayout
    android:id="@+id/frame_container"   
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior" /><![CDATA[
/>

Я использую пустоту в своей деятельности, чтобы загрузить фрагмент, и вот код:

private void loadFragment(Fragment fragment) {
    // load fragment
    FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
    transaction.replace(R.id.frame_container, fragment);
    transaction.addToBackStack(null);
    transaction.commit();
}

и при дальнейшей деятельности я использую этот код:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_home_activity);

    toolbar = getSupportActionBar();
    toolbar.setTitle("Home");
    loadFragment(new HomeFragment());

    BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.navigation);
    navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);
}

но, похоже, мое приложение всегда вылетает при запуске. Есть идеи?

Кстати, извините за плохой английский!

Edit: Проблема кажется в коде транзакции .replace ()

transaction.replace(R.id.frame_container, fragment);

когда я закомментировал это, мое приложение работает, но я не могу загрузить фрагмент тогда

Редактировать 2: Вот причина сбоя моего приложения:

2018-11-07 08: 44: 44.469 20414-20414 / com.example.han.xvit D / AndroidRuntime: выключение ВМ 2018-11-07 08: 44: 44.470 20414-20414 / com.example.han.xvit E / AndroidRuntime: ИСКЛЮЧИТЕЛЬНОЕ ИСКЛЮЧЕНИЕ: главный Процесс: com.example.han.xvit, PID: 20414 java.lang.RuntimeException: невозможно запустить действие ComponentInfo {com.example.han.xvit / com.example.han.xvit.home_activity}: java.lang.RuntimeException: com.example.han.xvit.home_activity@a800718 должен реализовать OnFragmentInteractionListener на android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2721) на android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2782) на android.app.ActivityThread.-wrap12 (ActivityThread.java) на android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1521) на android.os.Handler.dispatchMessage (Handler.java:102) на android.os.Looper.loop (Looper.java:163) на android.app.ActivityThread.main (ActivityThread.java:6228) в java.lang.reflect.Method.invoke (родной метод) на com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:904) на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:794) Вызывается: java.lang.RuntimeException: com.example.han.xvit.home_activity@a800718 должен реализовать OnFragmentInteractionListener в com.example.han.xvit.HomeFragment.onAttach (HomeFragment.java:83) на android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManager.java:1404) на android.support.v4.app.FragmentTransition.addToFirstInLastOut (FragmentTransition.java:1195) на android.support.v4.app.FragmentTransition.calculateFragments (FragmentTransition.java:1078) на android.support.v4.app.FragmentTransition.startTransitions (FragmentTransition.java:117) на android.support.v4.app.FragmentManagerImpl.executeOpsTogether (FragmentManager.java:2408) на android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute (FragmentManager.java:2366) на android.support.v4.app.FragmentManagerImpl.execPendingActions (FragmentManager.java:2273) на android.support.v4.app.FragmentManagerImpl.dispatchStateChange (FragmentManager.java:3273) на android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated (FragmentManager.java:3229) на android.support.v4.app.FragmentController.dispatchActivityCreated (FragmentController.java:201) на android.support.v4.app.FragmentActivity.onStart (FragmentActivity.java:620) на android.support.v7.app.AppCompatActivity.onStart (AppCompatActivity.java:178) на android.app.Instrumentation.callActivityOnStart (Instrumentation.java:1249) на android.app.Activity.performStart (Activity.java:6897) на android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2684) на android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2782) на android.app.ActivityThread.-wrap12 (ActivityThread.java) на android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1521) на android.os.Handler.dispatchMessage (Handler.java:102) на android.os.Looper.loop (Looper.java:163)на android.app.ActivityThread.main (ActivityThread.java:6228) в java.lang.reflect.Method.invoke (родной метод) на com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:904) на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:794)

1027 *

Редактировать 3: Я успешно решил проблему. Кажется, мне не хватает нескольких реализаций фрагментов в моей домашней деятельности

Решение можно увидеть на здесь

1 Ответ

0 голосов
/ 07 ноября 2018

Сначала удалите <![CDATA[/>, чтобы макет стал таким:

 <FrameLayout
    android:id="@+id/frame_container"   
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior" />

Затем из следующего журнала ошибок:

com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:904) в com.android.internal.os.ZygoteInit.main (ZygoteInit.java:794). Вызвано: java.lang.RuntimeException : com.example.han.xvit.home_activity@a800718 должен реализовать OnFragmentInteractionListener на com.example.han.xvit.HomeFragment.onAttach (HomeFragment.java:83) на

это означает, что вам нужно внедрить OnFragmentInteractionListener в свою активность, потому что это нужно вашему HomeFragment. Пожалуйста, проверьте ваш HomeFragment onAttach.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...