Как я могу изменить цвет фона кнопки


У меня есть много кнопок в моем приложении калькулятора. Я тестирую только с одной кнопкой, чтобы начать, что идентификатор кнопки "один" и должен изменить цвет, когда я нажимаю кнопку blue theme. Я попробовал следующие методы:

blueTheme = (Button) findViewById(R.id.blueTheme);
blueTheme.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {

        one.setBackgroundColor(Color.argb(175, 144, 202, 249));
        one.setBackgroundColor(Color.parseColor(/*hex code here*/));
        one.setBackgroundColor(Color.BLUE);

    }

});    

Кажется, ничто ничего не делает. Я пытаюсь изменить цвет кнопки в одном действии с помощью опции в другом действии. Вот фактическая кнопка one:

one = (Button) findViewById(R.id.one);
one.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {

        result.append("1");
    }
});

Xml-код one в activity_main.xml:

<Button android:id="@+id/one"
        android:layout_width="wrap_content"
        android:layout_height="100dp"
        android:layout_weight="1"
        android:background="#CCCCCC"
        android:text="1"
        android:textColor="#FF6600"
        android:textSize="50sp"
        android:layout_marginRight="1dp"
        android:layout_marginTop="1dp"
        android:layout_marginBottom="1dp" />

Идея состоит в том, что будет быть вариантом в другом намерении, где я могу изменить цвета калькулятора, но тестирование на одной кнопке терпит неудачу, не может продолжаться. Спасибо, что уделили мне время.

3   2  

3 ответа:

Проблема заключается в том, что щелчок от одного действия не может перейти к другому действию, если вы не передадите его.

В упражнении с синей кнопкой темы

blueTheme.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        //NOTE: Where I've put MainActivity that should actually be the name
        //      of whatever activity this code is nested in
        Intent intent = new Intent(MainActivity.this, OtherActivity.class); //use your real class name
        intent.putExtra(OtherActivity.EXTRA_COLOR, Color.BLUE);
        startActivity(intent);

    }

});  

В вашей другой активности.класс

public class OtherActivity extends Activity {

    public static String EXTRA_COLOR = "EXTRA_COLOR";

    public void onCreate(...) {

        View one = (Button) findViewById(R.id.one);

        //NOTE: if you add singleTop to this activity in the manifest
        //      you might need to do this on onNewIntent

        Intent intent = getIntent();
        if (intent.hasExtra(EXTRA_COLOR)) {
            int color = intent.getIntExtra(EXTRA_COLOR, Color.WHITE);
            one.setBackgroundColor(color);
        }

    }

}

Используйте это :

// If you're in an activity:
yourButton.setBackgroundColor(getResources().getColor(R.color.red));
// OR, if you're not: 
yourButton.setBackgroundColor(yourButton.getContext().getResources().getColor(R.color.red));

Если вы хотите задать цвет фона без использования предварительно определенного цветового ресурса, сделайте это следующим образом

one.setBackgroundColor(0xFFFF0000); // Red
one.setBackgroundColor(0xFF00FF00); // Green

Здесь 0xFF00FF00 эквивалентно #ff00ff00 (#aarrggbb)