java - 单击按钮后如何更改变量的值并在不同的活动中获取该值
问题描述
我有一个按钮。当我单击按钮时,我想将变量的值更改为 3。在另一个活动中,我希望能够获取变量的值并根据该值进行一些计算。
我尝试过使用 getter 和 setter 方法,只是传统上更改了值,但似乎没有任何效果。
//MainActivity.java
mButtonChoice2 = (Button)findViewById(R.id.choice2);
mButtonChoice2.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view){
//My logic for Button goes in here
if (mButtonChoice2.getText() == "Three"){
setDays(3);
openActivity();
}
}
public int getDays() {
return days;
}
public void setDays(int value){
days = value;
}
public void openActivity() {
Intent intent = new Intent(this, SecondActivity.class);
startActivity(intent);
}
//SecondActivity.java
public class SecondActivity extends AppCompatActivity {
private TextView textview;
private MainActivity obj = new MainActivity();
Integer days = obj.getDays();
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
textview = findViewById(R.id.program);
if (days == 3) {
textview.setText("Days is 3");
}
else {
textview.setText(days);
}
我希望 SecondActivity 中的 textview 用“days is 3”更新 textview 文本
但是,它只是出错,因为它无法正确接收整数天的值。
解决方案
尝试以下更新的代码:
//MainActivity.java
mButtonChoice2 = (Button)findViewById(R.id.choice2);
mButtonChoice2.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view){
//My logic for Button goes in here
if (mButtonChoice2.getText() == "Three"){
setDays(3);
openActivity();
}
}
public int getDays() {
return days;
}
public void setDays(int value){
days = value;
}
public void openActivity() {
Intent intent = new Intent(this, SecondActivity.class);
intent.putExtra ("days",days);
startActivity(intent);
}
//SecondActivity.java
public class SecondActivity extends AppCompatActivity {
private TextView textview;
private MainActivity obj = new MainActivity();
// Integer days = obj.getDays();
int days=0;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
Intent intent=getIntent();days=intent.getIntExtra ("days",0);
textview = findViewById(R.id.program);
if (days == 3) {
textview.setText("Days is 3");
}
else {
textview.setText(days);
}
参考:https ://developer.android.com/reference/android/content/Intent https://www.dev2qa.com/passing-data-between-activities-android-tutorial/
推荐阅读
- typescript - 是否可以在 TypeScript 中为 tsc 编译引发自定义错误?
- java - B 不能转换为 org.apache.shiro.session.Session
- ruby-on-rails - 向 super 的调用添加额外的参数
- python - GitHub 在 selenium 中创建存储库按钮 clickikng
- arrays - 如何迭代数组并将每个数组值传递给剧本中的角色
- java - 为什么我总是得到 null 而不是我想要的输出?
- php - 代替没有 register_globals 的 $DOCUMENT_ROOT?
- apache-nifi - 我可以将 Apache NiFi 中的 Provenance 数据转换为 Prov-O 并放入 RDF 图吗?
- java - 画中画中的活动生命周期
- python - while 循环 for if, elif,