2016-03-07 2 views
0

Я создаю простое приложение, и я просто хочу показать что-то из созданного мной фрагмента. Я искал, и я нашел этот вопрос на StackOverflow:Ошибка с фрагментами в android

Я реализовал код на this answer и это то, что у меня есть:

  FragmentManager fragmentManager = getFragmentManager(); 
      FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
      BlankFragment fragment = new BlankFragment(); 
      fragmentTransaction.add(R.id.content_frame, fragment); 
      fragmentTransaction.commit(); 

Моя проблема заключается в .add линии, потому что Android-студия не может решить метод. Я не знаю, где проблема, поэтому я буду размещать больше кода, когда вам нужно.

EDIT

Я хочу, чтобы показать фрагмент, когда я нажимаю в cardView. Теперь, когда я нажимаю в окне и запустите этот код:

android.support.v4.app.FragmentManager fragmentManager = getSupportFragmentManager(); 
       android.support.v4.app.FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 

       BlankFragment fragment = new BlankFragment(); 
       fragmentTransaction.add(R.id.content_frame, fragment); 
       fragmentTransaction.commit(); 

Это LogCat это проявляется:

03-07 11:21:40.431 13068-13068/com.example.sdilab.pap E/AndroidRuntime: FATAL EXCEPTION: main 
                    java.lang.RuntimeException: [email protected] must implement OnFragmentInteractionListener 
                     at com.example.sdilab.pap.BlankFragment.onAttach(BlankFragment.java:74) 
                     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1019) 
                     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1252) 
                     at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738) 
                     at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1617) 
                     at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:517) 
                     at android.os.Handler.handleCallback(Handler.java:800) 
                     at android.os.Handler.dispatchMessage(Handler.java:100) 
                     at android.os.Looper.loop(Looper.java:194) 
                     at android.app.ActivityThread.main(ActivityThread.java:5468) 
                     at java.lang.reflect.Method.invokeNative(Native Method) 
                     at java.lang.reflect.Method.invoke(Method.java:525) 
                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:936) 
                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:703) 
                     at dalvik.system.NativeStart.main(Native Method) 

Я изменил код, и я исправил некоторые ошибки на OnClick() и теперь logcat отличается.

Это деятельность главного:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v4.widget.DrawerLayout 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/drawer_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true" 
    tools:openDrawer="start"> 



    <android.support.design.widget.NavigationView 
     android:id="@+id/nav_view" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:layout_gravity="start" 
     android:fitsSystemWindows="true" 
     app:headerLayout="@layout/nav_header_main" 
     app:menu="@menu/activity_main_drawer" /> 

    <include layout="@layout/content_main"/> 
    <include layout="@layout/app_bar_main"/> 


</android.support.v4.widget.DrawerLayout> 

и у меня есть этот FrameLayout на content_main:

<FrameLayout 
     android:id="@+id/content_frame" 
     android:visibility="gone" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 
    </FrameLayout> 

Это мой OnClick():

cardView.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
        FrameLayout frame = (FrameLayout)findViewById(R.id.content_frame); 
        android.support.v4.app.FragmentManager fragmentManager = getSupportFragmentManager(); 
        android.support.v4.app.FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
        //setContentView(R.layout.fragment_blank); 
        BlankFragment fragment = new BlankFragment(); 
        fragmentTransaction.add(R.id.content_frame, fragment); 
        fragmentTransaction.commit(); 
        frame.setVisibility(View.VISIBLE); 

      } 
     }); 

ответ

1

Вместо getFragmentManeger() попробовать для использования getSupportFragmentManager();

также проверьте, что вы добавили импорт android.support.v4.app.FragmentManager; в свой раздел impor.

+0

Можете ли вы проверить логарифм, который я разместил? Я изменил код, как вы предлагали, и все было хорошо, но когда я нажимаю кнопку, которая заставляет этот код запускаться, как я упоминаю там, показывает logcat, о котором я говорю. –

+0

ok Я проверяю –

+0

Проверьте свой код в строке 60. Есть некоторая проблема в onClick(). Возможно, вы неправильно создаете свой интерактивный вид. Сначала проверьте идентификатор. Или опубликуйте XML activity_main. –

Смежные вопросы