在我的代码中,我想将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中没有显示的错误。
答案 0 :(得分:-1)
根据documentation的替换功能签名是
replace(int containerViewId, Fragment fragment, String tag)
其中第一个参数是containerViewId,您应该在其中传递Fragment Container Layout Id您已经传递了不是容器的ImageView ID。
ft.replace(R.id.fragtrucks,FC,"trucks");