gpt4 book ai didi

java - 添加 fragment 时 Activity 布局不会改变

转载 作者:太空宇宙 更新时间:2023-11-04 11:30:50 25 4
gpt4 key购买 nike

我有一个 Activity ,当单击其中的按钮时会添加全屏 fragment 。这是我的 Activity 的 XML:

<?xml version="1.0" encoding="utf-8"?>
<TableLayout
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"
tools:context="clyky.cartracker.activities.AddVehicleActivity"
android:id="@+id/addVehicleContainer">
<TableRow>
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/lblPlate"
android:text="Targa"
android:labelFor="@+id/txtPlate"/>
<EditText
android:layout_height="match_parent"
android:layout_width="match_parent"
android:id="@+id/txtPlate"
android:inputType="text"
android:hint="Targa del veicolo"/>
</TableRow>
<TableRow>
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/lblKm"
android:text="Chilometri"
android:labelFor="@+id/txtPlate"/>
<EditText
android:layout_height="match_parent"
android:layout_width="match_parent"
android:id="@+id/txtKm"
android:inputType="number"
android:hint="Chilometraggio"/>
</TableRow>
<TableRow>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/lblInUse"
android:labelFor="@+id/chckbxInUse"
android:text="In uso:"/>

<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/chckbxInUse"/>
</TableRow>
<TableRow>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/lblInsuranceDate"
android:labelFor="@+id/txtInsuranceDate"
android:text="Data di assicurazione:"/>

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/txtInsuranceDate"
android:text=""/>

<Button
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:id="@+id/btnShowDatePickerForInsuranceDate"
android:onClick="showDatePicker"
android:text="Seleziona"
android:tag="0"/>
</TableRow>
<TableRow>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/lblMatriculationDate"
android:labelFor="@+id/txtMatriculationDate"
android:text="Data d'immatricolazione:"/>

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/txtMatriculationDate"
android:text=""/>

<Button
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:id="@+id/btnShowDatePickerForMatriculationDate"
android:onClick="showDatePicker"
android:text="Seleziona"
android:tag="1"/>
</TableRow>
<TableRow>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/lblEffectiveFuelEconomy"
android:labelFor="@+id/txtEffectiveFuelEconomy"
android:text="Consumo di carburante (km/l):"/>

<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/txtEffectiveFuelEconomy"
android:inputType="number"/>
</TableRow>
<TableRow>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/lblMake"
android:labelFor="@+id/txtLastInspectionDate"
android:text="Produttore:"/>

<Spinner
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/spnrMake"/>
</TableRow>
<TableRow>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/lblModel"
android:labelFor="@+id/spnrModel"
android:text="Modello:"/>

<Spinner
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/spnrModel"/>
</TableRow>
<TableRow>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/lblTrim"
android:labelFor="@+id/spnrTrim"
android:text="Assetto:"/>

<Spinner
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/spnrTrim"/>
</TableRow>
<TableRow>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btnShowInspectionDates"
android:text="Aggiungi date di revisione"
android:onClick="showInspectionDatesFragment"/>
</TableRow>
<TableRow>
<Button
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:id="@+id/btnSubmit"
android:onClick="submit"
android:text="Invia"/>
</TableRow>
</TableLayout>

这是在单击 btnShowInspectionDates 时更改 fragment 的方法:

public void showInspectionDatesFragment(View v)
{
InspectionDatesFragment f = InspectionDatesFragment.newInstance(null);
Utilities.addFragment(R.id.addVehicleContainer, f, null, getSupportFragmentManager());
}

Utilities.addFragment 只是执行 fragment 事务(它创建一个 FragmentTransaction 对象,对其调用 add 方法并执行事务的提交)。

这是我的 InspectionDatesFragment 的布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">

<include layout="@layout/recycler_view_fragment_layout"/>

<Button
android:id="@+id/btnAddInspectionDate"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="1"
android:text="+"/>
</LinearLayout>

recycler_view_fragment_layout 仅在 LinearLayout 中包含一个 RecyclerView,我在其他包含 RecyclerView 的布局中使用它作为基本布局。

因此,当我点击 btnShowInspectionDates 时,手机上的布局似乎没有改变。我已经使用调试器通过在 onCreatedView 中放置断点来检查我的 fragment 是否真的创建了,是的,它已成功创建,因为它没有抛出任何异常。logcat 似乎没有提供有用的东西,所以有人知道如何解决我的问题吗?

提前致谢!

编辑

现在,我创建了一个 fragment ,其中包含 AddVehicleActivity 的先前布局,然后在单击 btnShowInspectionDates 时更改这两个 fragment 。但现在我遇到了另一个问题:btnAddInspectionDate 未显示在我的 InspectionDatesFragment 中: View 完全是白色的。

inspection_dates_fragment_layout:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">

<include layout="@layout/recycler_view_fragment_layout"/>

<Button
android:id="@+id/btnAddInspectionDate"
android:layout_width="100dp"
android:layout_height="100dp"
android:text="+"/>
</LinearLayout>

最佳答案

您将其添加到错误的容器中。

在 Activity 布局中,只需保留 Fragment 的容器即可。

再创建一个 fragment ,该 fragment 将具有 Activity 当前具有的布局,并将其添加到 Activity 的 fragment 容器中。

单击按钮时,只需替换/添加您想要启动的 fragment 。

关于java - 添加 fragment 时 Activity 布局不会改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43824536/

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