gpt4 book ai didi

android - 在我的案例中使用 LayoutInflater 时如何删除旧内容并显示新内容?

转载 作者:搜寻专家 更新时间:2023-11-01 08:13:59 31 4
gpt4 key购买 nike

我的 ma​​in.xml 布局仅包含两个按钮 和一个内容区域,如下所示:

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


<LinearLayout
android:id="@+id/myBtns"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<Button
android:id="@+id/btn_one"
android:layout_width="100dip"
android:layout_height="30dip"
android:text="button one"
/>
<Button
android:id="@+id/btn_two"
android:layout_width="100dip"
android:layout_height="30dip"
android:text="button two"
/>
</LinearLayout>

<LinearLayout
android:id="@+id/content_area"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<!--different button press will embed different content here-->

</LinearLayout>


</LinearLayout>

我想创建自己的类似标签的功能,每次按下按钮都会更新按钮下方的内容(content_area)。所以我准备了另外两个内容布局:

content_one.xml:

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

<TextView.../>
<Button .../>

</LinearLayout>

content_two.xml:

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

<Gallery.../>
<Button .../>

</LinearLayout>

使用上面显示的所有简单代码,我想实现以下功能:

ma​​in.xml中:

  • button_one按下,content_one.xml 将被嵌入到 content_area ma​​in.xml

  • button_two按下,content_area ma​​in.xml 将更新为 content_two.xml

这意味着使用按钮创建一个类似标签的功能

我试过:

button_one.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v){
LayoutInflater inflater = (LayoutInflater)MyActivity.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View inflatedView = inflater.inflate(R.layout.content_one, null);

LinearLayout contentArea= (LinearLayout) findViewById(R.id.content_area);
contentArea.addView(inflatedView);
}
});

button_two.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v){
LayoutInflater inflater = (LayoutInflater)MyActivity.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View inflatedView = inflater.inflate(R.layout.content_two, null);

LinearLayout contentArea= (LinearLayout) findViewById(R.id.content_area);
contentArea.addView(inflatedView);
}
});

上面的代码部分工作,我的意思是当button_one按下,content_areabutton_two 时显示 content_one.xml按下,content_area显示 content_two.xml ,它们工作正常!

但是如果先按下其中一个按钮,然后再按下另一个按钮,则内容仍保留在旧按钮触发的内容中。例如,当应用程序第一次加载时,如果先按button_one , content_one.xml 正在显示,之后,如果我按 button_two ,内容保留content_one.xml

我的问题是在使用 LayoutInflater 时如何删除旧内容并显示新内容?

最佳答案

问题是您在添加新 View 时没有删除旧 View 。在添加新 View 之前粘贴这行代码:

contentArea.removeAllViews()

编辑:请注意,每次按下按钮时都会膨胀 View ,您之前的状态将始终丢失。如果您需要保持 View 状态,我会采纳 Idistic 的建议。

关于android - 在我的案例中使用 LayoutInflater 时如何删除旧内容并显示新内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6668519/

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