java - 如何将信息从一个 java 类传递到另一个
问题描述
我需要将一个参数从一个 Java 类(A)传递到另一个 Java 类(B)。我使用了互联网上的许多解决方案,但它无法解决我的问题。用户将从单选按钮列表中选择他们的答案。分数将被添加,我需要将分数传递给 B 类。
在 B 类中,用户继续回答问题,我需要将 A 类和 B 类的分数相加得到最终分数并显示在 B 类的底部。当我单击 A 类中的按钮时,应用程序一直停止。但我认为问题出在B级。有谁知道如何解决这个问题?太感谢了。
一类
private int score;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.a);
Button btn = findViewById(R.id.anxnext);
final RadioGroup rg1 = findViewById(R.id.anxq1g);
final RadioGroup rg2 = findViewById(R.id.anxq2g);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Get the checked Radio Button ID from Radio Group
int g1 = rg1.getCheckedRadioButtonId();
int g2 = rg2.getCheckedRadioButtonId();
if (g1 != -1) {
View radioButton = rg1.findViewById(g1);
idx1 = rg1.indexOfChild(radioButton);
}
if (g2 != -1) {
View radioButton = rg2.findViewById(g2);
idx2 = rg2.indexOfChild(radioButton);
}
score=idx1+idx2;
Intent intent = new Intent(A.this, B.class);
intent.putExtra("message", score);
startActivity(intent);
}
});
}
B级
private int score1,totalscore;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.b);
Bundle extras = getIntent().getExtras();
if(extras!=null) {
String m= extras.getString("message");
totalscore=Integer.parseInt(m);
}
Button btn = findViewById(R.id.anxresult);
final TextView tv_result = findViewById(R.id.tv_result);
final RadioGroup rg10 = findViewById(R.id.anxq10g);
final RadioGroup rg11 = findViewById(R.id.anxq11g);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Get the checked Radio Button ID from Radio Grou[
int g1 = rg10.getCheckedRadioButtonId();
int g2 = rg11.getCheckedRadioButtonId();
if (g1 != -1) {
View radioButton = rg10.findViewById(g1);
idx10 = rg10.indexOfChild(radioButton);
}
if (g2 != -1) {
View radioButton = rg11.findViewById(g2);
idx11 = rg11.indexOfChild(radioButton);
}
score1 = idx10 + idx11;
totalscore = score1 + totalscore;
tv_result.setText(totalscore + " selected.");
}
});
}
解决方案
注意数据类型:
在 A 类中,您有:
score=idx1+idx2;
Intent intent = new Intent(A.this, B.class);
intent.putExtra("message", score);
startActivity(intent);
这score
是 int,但是在 B 类中:
Bundle extras = getIntent().getExtras();
if(extras!=null) {
String m= extras.getString("message");
totalscore=Integer.parseInt(m);
}
您试图将其作为字符串获取,并且它为空,因此应用程序崩溃。
所以请将其更改为:
Bundle extras = getIntent().getExtras();
if(extras!=null) {
totalscore = extras.getInt("message");
}
然后再试一次
推荐阅读
- python - 如何修复命令不起作用的 Discord python 机器人
- oop - 在 Corona SDK 中将 Lua 对象转换为 JSON
- java - 在 Spring Boot 中避免 int 字段中的小数值
- android - OpenGL ES 2.0/3.0 中带有位图的立方体贴图纹理
- javascript - 如何将 node.js 脚本作为多个脚本运行?互不影响
- python-3.x - 根据 Dataframe pandas 中的列过滤器获取 n 行
- python - Jinja2 解析 JSON 对象,无法从中获取值
- android - 在使用它们声明依赖项时,Kapt 和 Gradle 中的实现有什么区别?
- entity-framework-core - EF Core 级联删除可为空的外键
- android - 宽度受限的Textview有时在recyclerview中不起作用