按下另一个 activity 中的按钮时更改按钮颜色

Change button color when a button in another activity is pressed

我是 Android 编程的新手,有时我仍然会遇到一些小问题。我目前的问题如下:

我有 2 个活动,每个活动只有一个按钮。第一个 activity 的按钮正在打开第二个 activity。但是,当我按下第二个 activity 中的按钮时,第一个 activity 按钮中的文本应更改为“Hello”,颜色应为红色。

我已经设法更改了文本,但没有更改颜色。有人可以帮我吗?

我的代码:

第一个activity:

package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

Button placeHolder;
Intent intent;

public void button0(View v){

    intent = new Intent(getApplicationContext(), MainActivity2.class);
    startActivity(intent);
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    placeHolder = findViewById(R.id.button);

    placeHolder.setText(getIntent().getStringExtra("message"));
}
}

第二个代码activity:

package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity2 extends AppCompatActivity {


public void buttonOnClick(View v){

    Intent intent=new Intent(MainActivity2.this, MainActivity.class);
    intent.putExtra("message", "Hello");
    startActivity(intent);
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main2);
}
}

您可以使用GreenRobot。然后你可以从其他活动中做任何事情。 这里是linkEvent Bus

在您的第一个 activity 中添加这行代码,您将文本设置为您的按钮:

要更改背景颜色:

placeHolder.setBackgroundColor(Color.parseColor("#FF0000"));

要更改文本颜色:

placeHolder.setTextColor(Color.parseColor("#FF0000"));

用法: MainActivity.java

package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

Button placeHolder;
Intent intent;

public static final int REQUEST_CODE = 101;

public void button0(View v){

    intent = new Intent(getApplicationContext(), MainActivity2.class);
    startActivityForResult(intent, REQUEST_CODE);
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    placeHolder = findViewById(R.id.button);
}

    // Call Back method  to get the Message form other Activity  
    @Override  
    protected void onActivityResult(int requestCode, int resultCode, Intent data){  
    super.onActivityResult(requestCode, resultCode, data);  

    // check if the request code is same as what is passed
  
    if(requestCode == REQUEST_CODE) {  
       placeHolder.setText(data.getStringExtra("message"));
       placeHolder.setTextColor(Color.parseColor("#FF0000"));
    }  

}  

主活动 2:


package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity2 extends AppCompatActivity {


public void buttonOnClick(View v){

    Intent intent=new Intent();
    intent.putExtra("message", "Hello");
    setResult(MainActivity2.REQUEST_CODE, intent);
    finish();
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main2);
}
}

您可以使用 startActivityforResult() 代替 startActivity() 然后当您从第二个 class 返回到第一个 class 然后将红色设置为您的按钮 onActivityResult() 功能谢谢

第二个Activity:

Intent intent=new Intent(MainActivity2.this, MainActivity.class);
    intent.putExtra("message", "Hello");
    intent.putExtra("color", -65536); //-65536 is color RED int value
    startActivity(intent);

第一个Activity

placeHolder.setText(getIntent().getStringExtra("message"));
placeHolder.setBackgroundColor(getIntent().getStringExtra("color",0)); // 0 is default value