我是 Android Studio 新手,但我以前编写过 Java 程序。 我需要在一个 Activity 中对两个数字求和,然后在新 Activity 中打印结果,编译器没问题,但应用程序强制关闭。 我的错在哪里? 这是我的来源:
public class MainActivity extends AppCompatActivity {
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
OpenActivity2();
}
});
}
public void SumAB(TextView tva, TextView tvb, TextView tvsomma) {
double a, b, somma;
a = Double.parseDouble(tva.getText().toString());
b = Double.parseDouble(tvb.getText().toString());
somma = a + b;
tvsomma.setText(String.valueOf(somma));
}
public void OpenActivity2() {
TextView result = findViewById(R.id.textView4);
TextView var1 = findViewById(R.id.textView);
TextView var2 = findViewById(R.id.textView3);
Intent intent = new Intent(this, Activity2.class);
startActivity(intent);
SumAB(var1,var2,result);
}
}
最佳答案
您在使用 startActivity(intent)
启动 Activity2 后调用 SumAB()
;因此,当执行 tvsomma.setText()
时,它期望找到 tvsomma
View ,但它是第一个 Activity 的一部分,现在应该处于后台。
I need to sum two numbers in one activity and then print the result in a new activity
您应该删除 SumAB()
方法并执行以下行为
在这里,您尝试在同一 Activity 中显示结果;如果您想在第二个 Activity 上显示结果,则必须使用
发送此金额double a, b, somma;
a = Double.parseDouble(tva.getText().toString());
b = Double.parseDouble(tvb.getText().toString());
somma = a + b;
intent.putExtra("SUM", somma);
startActivity(intent);
并使用以下方式在 Activity2
接收此结果:
int somma = getIntet().getIntExtra("SUM", 0); // 0 is the default value
然后将此值设置为 Activity2 上的某个 TextView
myTextView.setText(String.valueOf(somma));
关于java - Android Studio Java 中的两个变量求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62204015/