gpt4 book ai didi

android - 如何从 Activity 中删除 fragment ?

转载 作者:行者123 更新时间:2023-11-29 19:42:02 25 4
gpt4 key购买 nike

在单击幻灯片菜单中的一个选项后,我试图从我的 MainActivity 中删除一个 fragment 。但我找不到如何实现它。

我在网上查找并找到了 FragmentTransaction 类,但我认为我的实现有误。

主要 Activity Java;

 @Override
public boolean onNavigationItemSelected(MenuItem item) {
// Handle navigation view item clicks here.
int id = item.getItemId();

if (id == R.id.Technology) {
FragmentTransaction.remove(R.layout.frag);


} else if (id == R.id.Opinion) {


} else if (id == R.id.travel) {

} else if (id == R.id.politics) {

}else if(id == R.id.Home){
}

DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return true;

主要内容的 XML 文件;

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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: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:background="#692f2f"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:showIn="@layout/app_bar_main">


<fragment
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/fragment"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="53dp"
tools:layout="@layout/frag" />
</RelativeLayout>

最佳答案

对不起我的英语。

如果您希望能够在运行时管理您的 fragment ,您不应该将它们硬编码到您的 XML 文件中,而是像这样在您的 XML 中放置一个空容器:

<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/fragment"
/>

您通常不希望对 layout_width 和 layout_height 使用 wrap_content 以使放置更容易。此外,边距可以直接放在 fragment 的内容上,而不是 fragment 本身,否则,您可以将其放回 main_activity XML 布局文件中。

并在您的 fragment 类中对其进行膨胀:

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

return inflater.inflate(R.layout.your_fragment_layout_here, container, null);
}

然后在您的代码中,您应该有一个 FragmentManager 来使用 FragmentTransaction ,例如:

private FragmentManager fm;
private FragmentTransaction ft

onCreate 函数中:

fm = getFragmentManager();

然后:

@Override
public boolean onNavigationItemSelected(MenuItem item) {
// Handle navigation view item clicks here.
int id = item.getItemId();
ft = fm.beginTransaction();

if (id == R.id.Technology) {
ft.remove (fragment_instance_to_remove_here);
ft.commit();


} else if (id == R.id.Opinion) {


} else if (id == R.id.travel) {

} else if (id == R.id.politics) {

}else if(id == R.id.Home){
}

DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return true;
}

更多解释FragmentManager .

希望对你有帮助。

关于android - 如何从 Activity 中删除 fragment ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38511795/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com