我是Android编程的新手,我对我的项目有疑问。 我想改变我的开始活动背景(这是一个反应游戏)。 所有设置都有额外的活动(BackgroundColor,Sound等), 我在这部分输了:/我想在设置活动中选择一种颜色(蓝色和红色),并将背景更改为开始 - 活动中的选择颜色。这是活动设置的代码,颜色的RadioButtons在一个组(RadioGroup_Color)中。有人知道如何解决这个问题吗?
执行此代码时总是出错:
public class activity_settings extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_activity_settings);
colorchange();
}
public void colorchange() {
final RadioGroup radioGroup = (RadioGroup) findViewById(R.id.RadioGroup_Color);
final RelativeLayout background = (RelativeLayout) findViewById(R.id.start);
final Button button_save = (Button) findViewById(R.id.button_save);
button_save.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
changeOption(background);
}
});
final RadioButton changeToBlue = (RadioButton) findViewById(R.id.button_blue);
changeToBlue.setOnCheckedChangeListener(new radioGroup.OnCheckedChangeListener() {
public void onClick(View v) {
changeToBlue(background);
}
});
final RadioButton changeToRed = (RadioButton) findViewById(R.id.button_red);
changeToRed.setOnCheckedChangeListener(new radioGroup.OnCheckedChangeListener() {
public void onClick(View v) {
changeToRed(background);
}
});
}
public void changeOption(RelativeLayout background) {
if (background.isEnabled()) {
background.setEnabled(false);
} else {
background.setEnabled(true);
}
}
public void changeToBlue(RelativeLayout background) {
background.setBackgroundColor(0x0000FF00);
background.invalidate();
}
public void changeToRed(RelativeLayout background) {
background.setBackgroundColor(0x0000FF00);
background.invalidate();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_activity_settings, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}}
错误消息:
Error:(38, 91) error: <anonymous com.example.clecks.reaction_game.activity_settings$2> is not abstract and does not override abstract method onCheckedChanged(CompoundButton,boolean) in OnCheckedChangeListener
修改
经过建议和修正,我仍然得到:
错误:(8,8)错误:com.example.clecks.reaction_game.OnCheckedChangeListener不是抽象的,并且不会覆盖android.widget.CompoundButton.OnCheckedChangeListener中的抽象方法onCheckedChanged(CompoundButton,boolean)。
当我点击它时会打开一个名为OnCheckedChangeListener.java
的新类:
public class OnCheckedChangeListener implements CompoundButton.OnCheckedChangeListener { }
答案 0 :(得分:1)
让我们来看看你的实际错误:
错误:(38,91)错误:不是抽象的,并且不会覆盖OnCheckedChangeListener中的抽象方法onCheckedChanged(CompoundButton,boolean)
您错过onCheckedChanged(CompoundButton,boolean)
上的OnCheckedChangeListener
实施。
查看您的代码,我可以看到两个OnCheckedChangeListener
补充说明;这是一个:
changeToBlue.setOnCheckedChangeListener(new radioGroup.OnCheckedChangeListener() {
public void onClick(View v) {
changeToBlue(background);
}
});
这些实施是错误的。
您需要覆盖onCheckedChanged(CompoundButton,boolean)
(onClick(View)
中不存在OnCheckedChangeListener
),因为错误报告。另外new radioGroup.OnCheckedChangeListener
错误并导致主要错误。
使用以下代码修复代码:
changeToBlue.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton c, boolean b) {
changeToBlue(background);
}
});
看看简单的官方documentation。