当有app加载时,我有2个单选按钮,默认为1。 如果选择1,则隐藏表2.如果选择Radiobutton 2,则隐藏表1。 除了......之外,这个工作正常 我遇到的问题是,当应用程序首次加载Radiobutton 1时,检查,但两个表都打开,直到我选择radiobutton 2然后它开始工作。所以我在初次加载时遗漏了一些东西。
非常感谢正确方向的推动。
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.RadioGroup;
import android.widget.TableLayout;
import android.widget.RadioGroup.OnCheckedChangeListener;
public class Slab extends Activity {
private RadioGroup RadioMeat;
/** Called when the activity is first created. */
//@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.slab);
RadioMeat = (RadioGroup) findViewById(R.id.rgMeat);
RadioMeat.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId) {
case R.id.rbBeef :
if (checkedId == R.id.rbBeef) {
TableLayout tl = (TableLayout)findViewById(R.id.tableLayout1);
tl.setVisibility(View.VISIBLE);
TableLayout tl1 = (TableLayout)findViewById(R.id.tableLayout2);
tl1.setVisibility(View.GONE);
}
break;
case R.id.rbPork :
if (checkedId == R.id.rbPork) {
TableLayout tl = (TableLayout)findViewById(R.id.tableLayout2);
tl.setVisibility(View.VISIBLE);
TableLayout tl1 = (TableLayout)findViewById(R.id.tableLayout1);
tl1.setVisibility(View.GONE);
}
break;
}
}
});
}
}
XML
<RadioGroup
android:id="@+id/rgMeat"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<RadioButton
android:id="@+id/rbBeef"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/Beef"
android:checked="true"/>
<RadioButton
android:id="@+id/rbPork"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/Pork" />
</RadioGroup>
答案 0 :(得分:1)
您面临的问题是,在开始时,首先调用onCreate()时,永远不会调用onCheckedChanged()。只有在检查时才会调用它。如果你以编程方式检查它而不是通过xml进行检查,它也会被调用。所以你可以做两种方式,
在你的on create()
致电
((TableLayout)findViewById(R.id.tableLayout2))setVisibility(View.GONE);
或致电
radiobutton 1的setChecked()。