2016-03-07 64 views
0

我正在構建一個簡單的應用程序,我只想顯示我創建的片段的東西。我一直在尋找,我發現在計算器這個問題:在Android中的片段的錯誤

我實現的代碼上this answer,這我有什麼:

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

我的問題是。新增線路,因爲Android Studio中解決不了方法。 我不知道問題出在哪裏,所以我會在需要時發佈更多的代碼。

編輯

我想要顯示的片段,當我在一個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;

+0

你可以檢查我發佈的logcat嗎?我改變了代碼,就像你建議的那樣,這很好,但是當我點擊讓代碼運行的按鈕時,就像我在那裏提到的那樣,顯示了我正在談論的logcat。 –

+0

好的,我正在檢查 –

+0

請檢查第60行的代碼。onClick()中存在一些問題。可能是你沒有正確實例化你的可點擊查看。先檢查ID。或發佈activity_main的XML。 –