【问题标题】:How to fix fragmentTransaction.replace error and cannot be converted to Fragment如何修复 fragmentTransaction.replace 错误并且无法转换为 Fragment
【发布时间】:2016-10-02 19:07:26
【问题描述】:

我将在几周内学习 Android。

我现在正在尝试使用片段。并使用来自https://github.com/dogriffiths/HeadFirstAndroid 的想法 从书 https://books.google.com/books?id=qkzrCQAAQBAJ&pg=PA275&lpg=PA275&dq=pure+java+class+fragments&source=bl&ots=Ayz-JbqS4r&sig=f2DBRNgX_wrvBnGrDhJiIfHNhrE&hl=en&sa=X&ved=0ahUKEwjD6OHS67rPAhUG1CYKHczIBnAQ6AEIMDAD#v=onepage&q=pure%20java%20class%20fragments&f=false

我来了

'replace(int, android.app.fragment)' 在 'android.app.fragmentTransaction' 不能应用于

这也是

错误:ContactDetailFragment 无法转换为 Fragment

源代码

import android.app.Activity;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.view.View;


    public class ContactActivity extends Activity implements ContactListFragment.ContactListListener{



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


        }

        @Override
        public void itemClicked(long id){
            //method also defined in the listener
            View fragmentContainer = findViewById(R.id.fragment_detail_container);
            if (fragmentContainer != null){
                ContactDetailsFragment detailsFragment = new ContactDetailsFragment();
                FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
                detailsFragment.setContact(id);
                //fragmentTransaction.replace(R.id.fragment_detail_container, detailsFragment);
                fragmentTransaction.replace(R.id.fragment_detail_container, detailsFragment);
                fragmentTransaction.addToBackStack(null);
                fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
                fragmentTransaction.commit();
            }

        }

    }

contactactivity.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_contact"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:baselineAligned="false"
    tools:context="esu.uco.rawal.p5rabina.ContactActivity">
        <fragment
            class="esu.uco.rawal.p5rabina.ContactListFragment"
            android:layout_width="0dp"
            android:layout_weight ="1"
            android:layout_height="match_parent"
            android:id="@+id/contact_list_frag"/>


        <FrameLayout
            android:id="@+id/fragment_detail_container"
            android:layout_width="0dp"
            android:layout_weight="2"
            android:layout_height="match_parent"
            >

        </FrameLayout>

</LinearLayout>

【问题讨论】:

  • R.id.fragment_detail_container 是容器还是视图?你能在你想添加这个片段的地方添加xml文件布局吗?
  • @EEJ 它的容器。我添加了 xml 布局。请检查一下。
  • 听起来您导入了错误的 Fragment 类,或者应该改用 supportFragmentManager
  • ContactDetailFragment中使用的导入相同?
  • @cricket_007 谢谢。刚放了android.app.Fragment import 语句,错误就消失了。

标签: android android-fragments android-listfragment


【解决方案1】:

检查你的进口。你可能使用了错误的包。

有两个 Fragment 类:

还有两个 FragmentTransaction 类:

您不能将 v4 FragmentTransaction 与原生 Fragment 或相反使用。

您可能还想阅读Support Library Features 文档。

【讨论】:

    猜你喜欢
    • 2019-02-26
    • 1970-01-01
    • 2018-11-26
    • 1970-01-01
    • 2019-10-12
    • 2022-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多