java - Android测验应用程序在检查用户答案时崩溃
问题描述
我遇到的问题似乎发生在 checkIfRight() 中,我希望它获取单击按钮时的文本,然后根据 rightAnswers 数组元素检查该文本,如果正确则显示“正确”,如果错误则显示“错误”即使我在 if 语句中比较两个字符串,这似乎也不起作用。如果有人可以帮助我,我将永远感激不尽。
这是我的 java 类的以下代码:
package com.example.tass.damnquizinfoapp;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import org.w3c.dom.Text;
public class Categories extends AppCompatActivity {
int count = 1;
Button btn;
TextView score;
int count2 = 0;
String buttonText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_categories);
}
String[] quesitons =
{
"What was the tallest Damn as of 2017?",
"How many people did the South Fork Dam kill in 1889?",
"What do Damns generate?",
"By how much percent did freshwater species decline by due to dams since 1970?",
"Around what time was the first damn built?",
"How many large(15m+) dams are in existence today?",
"The average dam can be expected to cost how much?"
};
String[] rightAnswers =
{
"Jinping-I",
"2200",//right
"Energy",//right
"37%",
"4000 B.C",
"57,000",
"A few billion dollars"
};
String[] sampleAnswersA =
{
"The Sanxia",
"2200",//right
"Energy",//right
"20%",
"1280 A.D",
"7,000",
"Less than $20million"
};
String[] sampleAnswersB =
{
"Jinping-I",//right
"204",
"Fish",
"68%",
"4000 B.C",//right
"57,000",//right
"More than $1 trillion"
};
String[] sampleAnswersC =
{
"Guri Dam",
"7819",
"Water",
"37%", //right
"2800 B.C",
"78,0000",
"A few billion dollars"//right
};
public void a1()
{
btn = (Button) findViewById(R.id.q1);
btn.setText(sampleAnswersA[count]);
}
public void a2()
{
btn = (Button) findViewById(R.id.q2);
btn.setText(sampleAnswersB[count]);
}
public void a3()
{
btn = (Button) findViewById(R.id.q3);
btn.setText(sampleAnswersC[count]);
getQuestions();
}
public void getQuestions()
{
TextView txt;
txt = (TextView) findViewById(R.id.mytext);
txt.setText(quesitons[count]);
}
//THIS SEEMS TO BE CAUSING ME PROBLEMS
public void checkIfRight()
{
String buttonText;
buttonText = btn.getText().toString();
if (rightAnswers[count2].equals(buttonText))
{
score = findViewById(R.id.score);
score.setText("right");
}
else{score.setText("wrong");}
}
public void onClick(View v)
{
a1();
a2();
a3();
checkIfRight();
getQuestions();
count++;
count2++;
}
}
这是 XML 类的代码:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:background="#e7e7e7"
>
<ImageView
android:layout_width="350dp"
android:layout_height="450dp"
android:src="@drawable/whitebackground"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
/>
<Button
android:id="@+id/q1"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:onClick="onClick"
android:layout_marginTop="180dp"
android:background="@drawable/rounded_btn"
android:text="The Sanxia"
android:textColor="#FFFFFF"
android:textStyle="bold" />
<Button
android:id="@+id/q2"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="203dp"
android:onClick="onClick"
android:background="@drawable/rounded_btn"
android:text="Jinping-I"
android:textColor="#FFFFFF"
android:textStyle="bold" />
<Button
android:id="@+id/q3"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="128dp"
android:onClick="onClick"
android:background="@drawable/rounded_btn"
android:text="Guri Dam"
android:textColor="#FFFFFF"
android:textStyle="bold"
/>
<TextView
android:id="@+id/mytext"
android:layout_width="253dp"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="78dp"
android:text="What was the tallest Damn as of 2017?"
android:textAlignment="center"
android:textColor="#000000"
android:textSize="20dp"
android:textStyle="bold" />
<Button
android:id="@+id/mybutton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="50dp"
android:text="NEXT"
android:onClick="onClick"
/>
<TextView
android:id="@+id/score"
android:layout_width="99dp"
android:layout_height="130dp"
android:layout_above="@+id/q1"
android:layout_alignParentEnd="true"
android:layout_marginBottom="-180dp"
android:text="Answer:"
android:textStyle="bold" />
</RelativeLayout>
解决方案
检查是否正确的方法你把这一行放在里面 if score = findViewById(R.id.score) 你把它放在本地所以当执行 else 它会崩溃 把它放在 if 之前是错误的,我建议你把所有的行 findviewbyid 放在 oncreate 方法中
推荐阅读
- c++ - Windows/C++:为什么加载的模块内存字节在运行时会发生变化?
- python - 字符串修改和采样更改
- swift - 如何在 JSON 服务器上使用补丁方法发送或上传图像文件?迅速
- javascript - 如何修复颚屏幕阅读器可访问性问题
- android - 我的 Android 应用程序构建失败 Hilt, WorkManager
- ssl - 无法连接 SSL 身份验证,出现错误“错误代码:SSL_ERROR_RX_RECORD_TOO_LONG”
- reactjs - InvalidCharacterError:无法在“文档”上执行“createElement”:提供的标签名称(“/static/media/avatar.6043f57a.png”)不是有效名称
- html - 使用切换角度过滤列表
- javascript - 基于内部 h1 值匹配到 JavaScript 中的数组值删除 div 类
- powershell - Powershell 引用参数:隐含与显式