gpt4 book ai didi

java - fragment 不替换父 Activity 的容器布局

转载 作者:行者123 更新时间:2023-12-02 03:38:43 25 4
gpt4 key购买 nike

我的 Android 应用程序中有一个 Activity ,其中我在框架布局中放置了一个 RecyclerView 小部件。框架布局充当父容器。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:paddingBottom="0dp"
android:paddingLeft="0dp"
android:paddingRight="0dp"
android:paddingTop="0dp"
tools:context="com.example.asad.comppecv2.AdminActivity">

<android.support.v7.widget.Toolbar
android:id="@+id/default_toolbar"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:minHeight="?attr/actionBarSize"
android:background="?attr/colorPrimary"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
android:popupTheme="@style/ThemeOverlay.AppCompat.Light"
/>

<FrameLayout
android:id="@+id/container_body"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_below="@+id/default_toolbar">

<android.support.v7.widget.RecyclerView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_below="@id/default_toolbar"
android:id="@+id/my_recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false"
android:paddingBottom="16dp"
android:paddingTop="16dp"
android:scrollbars="vertical" />
</FrameLayout>
</RelativeLayout>

这是我在 Activity 中实例化 RecyclerView 的代码。

RecyclerView recyclerView = (RecyclerView) findViewById(R.id.my_recycler_view);
recyclerAdapter = new RecyclerAdapter(Participant_Data_List,getApplicationContext());
recyclerView.setAdapter(recyclerAdapter);
final LinearLayoutManager layoutManager = new LinearLayoutManager(this);
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
recyclerView.setLayoutManager(layoutManager);

此 Activity 包含一个抽屉导航,我可以从中加载不同的 fragment 。

我想要的是,当加载 fragment 时,它会替换我的框架布局的内容。这是负责加载 fragment 的代码。

private void initiateFragment(){
if (fragment != null) {
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.addToBackStack(null);
ft.replace(R.id.container_body, fragment);
ft.commit();
}
}

这是我的 Activity 的图片,当 Activity 加载时默认实例化 RecyclerView。

enter image description here

这是我想要加载和替换回收器 View 的 fragment 的图片。

enter image description here

但是当我加载这个 fragment 时,它并没有替换,而是重叠在回收器 View 上。

enter image description here

如有任何帮助,我们将不胜感激!

更新#2

这是负责处理 fragment 的代码块

public boolean onItemClick(View view, int position, IDrawerItem drawerItem) {
result.setSelection(position,false);
clearStack();
switch (position) {
case 1:
fragment = new admin_fragment_data_entry();
break;
case 2:
fragment = new admin_fragment_data_edit();
break;
case 3:
fragment = new admin_fragment_judge_data();
break;
case 4:
fragment = new admin_fragment_schedule();
break;
}
initiateFragment();

return false;
}


private void clearStack(){
int count = getSupportFragmentManager().getBackStackEntryCount();
while(count > 0){
getSupportFragmentManager().popBackStack();
count--;
}

最佳答案

试试这个:

private void initiateFragment(){
if (fragment != null) {
FrameLayout frameLayout = (FrameLayout) findViewById(R.id.container_body);
frameLayout.removeAllViews();
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.addToBackStack(null);
ft.replace(R.id.container_body, fragment);
ft.commit();
}
}

关于java - fragment 不替换父 Activity 的容器布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37126443/

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