[英]Change button color when a button in another activity is pressed
我是 Android 编程的新手,有时我仍然会遇到一些小问题。 我目前的问题如下:
我有 2 个活动,每个活动只有一个按钮。 第一个活动的按钮是打开第二个活动。 但是当我在第二个活动中按下按钮时,第一个活动的按钮中的文本应更改为“Hello”,颜色应为红色。
我设法更改了文本,但没有更改颜色。 有人可以帮我吗?
我的代码:
第一项活动:
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"));
}
}
第二个活动的代码:
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);
}
}
在您将文本设置为按钮的第一个活动中添加这行代码:
要更改背景颜色:
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() insted of startActivity() 然后当你从第二个 class 回到第一个 class 然后设置红色按钮 onActivityResult() ZC1C425268E68385D14AB5074C17ZA
您可以使用绿色机器人。 然后你可以从其他活动中做任何事情。 这是链接事件总线
第二个活动:
Intent intent=new Intent(MainActivity2.this, MainActivity.class);
intent.putExtra("message", "Hello");
intent.putExtra("color", -65536); //-65536 is color RED int value
startActivity(intent);
第一个活动
placeHolder.setText(getIntent().getStringExtra("message"));
placeHolder.setBackgroundColor(getIntent().getStringExtra("color",0)); // 0 is default value
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.