Android RadioButton Color-Change for other Activity

时间:2015-05-05 12:08:47

标签: android android-activity colors

我是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 { }

1 个答案:

答案 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