Я создаю простое приложение, и я просто хочу показать что-то из созданного мной фрагмента. Я искал, и я нашел этот вопрос на 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);
}
});
Можете ли вы проверить логарифм, который я разместил? Я изменил код, как вы предлагали, и все было хорошо, но когда я нажимаю кнопку, которая заставляет этот код запускаться, как я упоминаю там, показывает logcat, о котором я говорю. –
ok Я проверяю –
Проверьте свой код в строке 60. Есть некоторая проблема в onClick(). Возможно, вы неправильно создаете свой интерактивный вид. Сначала проверьте идентификатор. Или опубликуйте XML activity_main. –