FargmentTransaction无效

时间:2018-02-15 12:20:04

标签: android android-fragments

在我的代码中,我想将fragments切换为ImageView onClick。我为它编写了代码,但是如果我点击图片,我的应用就会关闭。

public class FragHome extends Fragment {
ImageView frag_load;
ImageView frag_trucks;
ImageView frag_drivers;
ImageView frag_tracking;
ImageView frag_profile;
ImageView frag_history;

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

    View view = inflater.inflate(R.layout.frag_home, container, false);

   frag_load = (ImageView) view.findViewById(R.id.btnload);
    frag_trucks = (ImageView) view.findViewById(R.id.btntrucks);
    frag_drivers = (ImageView) view.findViewById(R.id.btndrivers);
    frag_tracking = (ImageView) view.findViewById(R.id.btntracking);
    frag_profile = (ImageView) view.findViewById(R.id.btnprofile);
    frag_history = (ImageView) view.findViewById(R.id.btnhistory);

    frag_load.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            FragCategory FC=new FragCategory();
            Bundle b=new Bundle();
            b.putString("type","load");
            FC.setArguments(b);
            FragmentTransaction ft=getFragmentManager().beginTransaction();
            ft.replace(R.id.fragload,FC,"load");
            ft.addToBackStack("load");
            ft.commit();
        }
    });
    frag_trucks.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            FragCategory FC=new FragCategory();
            Bundle b=new Bundle();
            b.putString("type","trucks");
            FC.setArguments(b);
            FragmentTransaction ft=getFragmentManager().beginTransaction();
            ft.replace(R.id.fragtrucks,FC,"trucks");
            ft.addToBackStack("trucks");
            ft.commit();
        }
    });
    frag_drivers.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            FragCategory FC=new FragCategory();
            Bundle b=new Bundle();
            b.putString("type","drivers");
            FC.setArguments(b);
            FragmentTransaction ft=getFragmentManager().beginTransaction();
            ft.replace(R.id.fragdrivers,FC,"drivers");
            ft.addToBackStack("drivers");
            ft.commit();
        }
    });
    frag_tracking.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            FragCategory FC=new FragCategory();
            Bundle b=new Bundle();
            b.putString("type","tracking");
            FC.setArguments(b);
            FragmentTransaction ft=getFragmentManager().beginTransaction();
            ft.replace(R.id.fragtracking,FC,"tracking");
            ft.addToBackStack("tracking");
            ft.commit();
        }
    });
    frag_profile.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            FragCategory FC=new FragCategory();
            Bundle b=new Bundle();
            b.putString("type","profile");
            FC.setArguments(b);
            FragmentTransaction ft=getFragmentManager().beginTransaction();
            ft.replace(R.id.fragprofile,FC,"profile");
            ft.addToBackStack("profile");
            ft.commit();
        }
    });
    frag_history.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            FragCategory FC=new FragCategory();
            Bundle b=new Bundle();
            b.putString("type","history");
            FC.setArguments(b);
            FragmentTransaction ft=getFragmentManager().beginTransaction();
            ft.replace(R.id.fraghistory,FC,"history");
            ft.addToBackStack("history");
            ft.commit();
        }
    });

    return view;
}}

我想知道问题是否与fragment中给出的id一致,但所有id都是正确的。 它不会在显示器中显示任何错误,但应用程序会在几秒钟后关闭。

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:baselineAligned="false"
        android:orientation="horizontal"
        android:padding="10dp">

        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="50"
            android:baselineAligned="false"
            android:orientation="vertical">

            <ImageView
                android:id="@+id/btnload"
                android:layout_width="match_parent"
                android:layout_height="150dp"
                android:src="@drawable/load"
                android:clickable="true"
                />

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:text="Find Load"
                android:textSize="20sp"
                />
        </LinearLayout>

        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="50"
            android:orientation="vertical">

            <ImageView
                android:id="@+id/btntrucks"
                android:layout_width="match_parent"
                android:layout_height="150dp"
                android:src="@drawable/trucks"
                android:clickable="true"/>

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:text="My Trucks"
                android:textSize="20sp"
                />
        </LinearLayout>

    </LinearLayout>


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="33"
        android:orientation="horizontal"
        android:padding="10dp">

        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="50"
            android:orientation="vertical">

            <ImageView
                android:id="@+id/btndrivers"
                android:layout_width="match_parent"
                android:layout_height="150dp"
                android:src="@drawable/driver"
                android:clickable="true"/>

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:text="Drivers"
                android:textSize="20sp"
                />
        </LinearLayout>

        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="50"
            android:orientation="vertical">

            <ImageView
                android:id="@+id/btntracking"
                android:layout_width="match_parent"
                android:layout_height="150dp"
                android:src="@drawable/tracking"
                android:clickable="true"/>

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:text="Tracking"
                android:textSize="20sp"
                />
        </LinearLayout>
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="33"
        android:orientation="horizontal"
        android:padding="10dp">

        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="50"
            android:orientation="vertical">

            <ImageView
                android:id="@+id/btnprofile"
                android:layout_width="match_parent"
                android:layout_height="150dp"
                android:src="@drawable/profile"
                android:clickable="true"/>

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:text="Profile"
                android:textSize="20sp"
                />
        </LinearLayout>

        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="50"
            android:orientation="vertical">

            <ImageView
                android:id="@+id/btnhistory"
                android:layout_width="match_parent"
                android:layout_height="150dp"
                android:src="@drawable/history"
                android:clickable="true"/>

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:text="History"
                android:textSize="20sp"
                />
        </LinearLayout>

    </LinearLayout>

</LinearLayout>

这是logcat中没有显示的错误。

1 个答案:

答案 0 :(得分:-1)

根据documentation的替换功能签名是

replace(int containerViewId, Fragment fragment, String tag)

其中第一个参数是containerViewId,您应该在其中传递Fragment Container Layout Id您已经传递了不是容器的ImageView ID。

ft.replace(R.id.fragtrucks,FC,"trucks");