按下另一个 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
我是 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