是否有机会初始化一个以上的.xml
文件,并在需要时使用其中的元素?
这是我的android代码:
mStepOneView = getLayoutInflater().inflate(R.layout.activity_exclusion_length, null);
mStepTwoView = getLayoutInflater().inflate(R.layout.activity_gambling_sites, null);
mStepThreeView = getLayoutInflater().inflate(R.layout.activity_info_sites, null);
mStepFourView = getLayoutInflater().inflate(R.layout.activity_custom_websites, null);
mStepFiveView = getLayoutInflater().inflate(R.layout.activity_activate_self_exclusion, null);
我有一个容器,我将在其中替换不同的步骤-每个步骤都是不同的.xml
布局,并且从这些xml文件中获取了每个元素。我想在 Kotlin 中执行此操作,问题是如果mStepOneView膨胀,则无法从mStepTwoView获取元素值。
答案 0 :(得分:1)
实际上,您使用了错误的方法,或者应该使用片段(如果孩子已经是父母,那么应该是孩子),或者应该在主布局中声明一个空布局,而仅动态添加其他XML(如布局)。您可以使用以下代码。
// get your inner relative layout child
RelativeLayout rl = (RelativeLayout) findById(R.id.rl);
// inflate content layout(Other XML file) and add it to the relative
// layout as a child and update it with different layout (XML) files conditionally
LayoutInflater layoutInflater = (LayoutInflater)
this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
rl.addView(1, layoutInflater.inflate(R.layout.content_layout, this, false) );
答案 1 :(得分:0)
我认为您可以通过在主要xml关键字中添加“ include”并控制每个xml布局的可见性来处理它。 因此,您将需要膨胀一个包含所有布局的xml布局,并通过获取具有id的布局并设置可见性消失或可见等等来控制要显示的xml布局。
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<include
android:id="@+id/activity_exclusion_length"
layout="@layout/activity_exclusion_length" />
<include layout="@layout/activity_gambling_sites" />
<include layout="@layout/activity_info_sites" />
<LinearLayout/>