我现在有一个xml文件,它在LinearLayout中有一个TableLayout。 TableLayout中有带按钮的TableRows。在我的Java代码中,我为每个按钮执行了setOnClickListener。
问题是我有几个这样的xml文件是完全相同的,除了在xml中不同按钮的ID和文本不同。
所以一个文件就是
<Button android:id="@+id/one" android:text="one" />
<Button android:id="@+id/two" android:text="two" />
和另一个文件
<Button android:id="@+id/three" android:text="three" />
<Button android:id="@+id/four" android:text="four" />
在Java中,在switch / case语句的一部分中我有一个案例:
setContentView(R.layout.a);
Button bOne = (Button) findViewById(R.id.one);
Button bTwo = (Button) findViewById(R.id.two);
另一个我有:
setContentView(R.layout.b);
Button bThree = (Button) findViewById(R.id.three);
Button bFour = (Button) findViewById(R.id.four);
冗余发送到两个以上的xml文件,这只是一个例子。
有没有办法做到这一点,没有多个布局文件,但要在一个布局文件中执行此操作? xml文件都完全相同,但是对于按钮的id和text部分。
我真的不在乎这是怎么做的 - 在Java中,在xml中,或者然而。这只是我偶尔对布局做了一些小调整,并且不想继续调整具有完全相同布局的每个文件,而是按钮id和文本。我想调整布局一次,并在我更改布局时使其适用于所有布局。如果我必须将整个布局文件放在Java中,那就没问题了。
答案 0 :(得分:1)
只保留一个xml文件(a.xml)。说两个按钮的ID为id1
和id2
。使用setContentView(R.layout.a);
。接下来声明2个按钮说b1
和b2
。设置b1 = (Button) findViewById(R.id.id1)
和b2 = (Button) findViewById(R.id.id2)
。将setOnClickListener
放入switch-case
答案 1 :(得分:0)
如果它总是只有那两个按钮,你可以有一个变量跟踪任意int,代表你所在的屏幕。保持相同的按钮,更改其文本/布局参数,并在OnClick()方法上测试该变量,以查看您所在的屏幕。
答案 2 :(得分:0)
为什么不丢失xml文件,让它们全部动态化。您可以使用xml中的代码执行所有操作。这是一个教程:Dynamic Layout Tutorials