我制作了一个Android应用程序,其中活动的背景颜色随着活动中的RadioButtons的点击而改变。
所以我们在点击任何一个RadioButton时都有3个RadioButton,活动的背景颜色应该改变为相应的颜色。
=>当我第一次点击任何一个单选按钮时,背景颜色会被正确反映出来。例如:
单击绿色后,背景颜色变为绿色。
=>但之后,每当我点击任何按钮时,背景颜色都不会立即反映出来。 例如:
我点击了蓝色,但背景颜色仍为绿色。
=>现在,当我点击其他单选按钮时,之前单击的单选按钮的背景颜色将反映在“活动”中。 例如:
点击红色后,我将背景颜色设为蓝色。
那么,我该如何解决这个问题呢。我希望在选中单选按钮后立即更改背景颜色。
MainActivity.java文件是:
package com.aupadhyay.assignment2;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.CompoundButton;
import android.widget.LinearLayout;
import android.widget.RadioButton;
import android.widget.RadioGroup;
public class MainActivity extends AppCompatActivity implements CompoundButton.OnCheckedChangeListener {
RadioGroup radioGroup;
RadioButton redRadioButton, greenRadioButton, blueRadioButton;
LinearLayout linearLayout;
public void initLinearLayout()
{
linearLayout = (LinearLayout) findViewById(R.id.linearLayout1);
}
public void initRadioGroup()
{
radioGroup = (RadioGroup) findViewById(R.id.radioGroup);
redRadioButton = (RadioButton) findViewById(R.id.redRadioButton);
greenRadioButton = (RadioButton) findViewById(R.id.greenRadioButton);
blueRadioButton = (RadioButton) findViewById(R.id.blueRadioButton);
redRadioButton.setOnCheckedChangeListener(this);
greenRadioButton.setOnCheckedChangeListener(this);
blueRadioButton.setOnCheckedChangeListener(this);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initRadioGroup();
initLinearLayout();
}
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
switch (buttonView.getId())
{
case R.id.redRadioButton:
linearLayout.setBackgroundColor(Color.RED);
break;
case R.id.greenRadioButton:
linearLayout.setBackgroundColor(Color.GREEN);
break;
case R.id.blueRadioButton:
linearLayout.setBackgroundColor(Color.BLUE);
break;
}
}
}
activity_main.xml文件是:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/linearLayout1"
android:padding="10dp"
android:orientation="vertical">
<RadioGroup
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:id="@+id/radioGroup">
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/redRadioButton"
android:text="Red"
android:layout_weight="1"/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/greenRadioButton"
android:text="Green"
android:layout_weight="1"/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/blueRadioButton"
android:text="Blue"
android:layout_weight="1"/>
</RadioGroup>
</LinearLayout>
答案 0 :(得分:1)
尝试使用WHERE
t1.Id < t2.Id
代替setOnClickListener
setOnCheckedChangeListener