我是第一次编程Android,我遇到了一些困难。这个想法是制作一个猜谜游戏应用程序,用户在他/她的脑袋中取一个数字,应用程序试图猜测它。用户将为应用程序提供更高和更低的提示。出于某种原因,按下开始按钮后应用程序崩溃了。因此,我知道onClick
方法中存在错误,但由于它在按下开始按钮后立即关闭,因此我无法使用类似println
的方法进行调试。
所以实际上我有两个问题:
开始,更高和更低是程序中的所有按钮。
@Override
public void onClick(View arg0) {
int min = 0;
int max = 100;
Random random = new Random(100);
int answer = 0;
if (arg0 == start) {
answer = random.nextInt(100);
buttonTextView.setText(answer);
}
else if (arg0 == higher){
min = answer;
answer = random.nextInt((max - min) + min);
buttonTextView.setText(answer);
}
else if (arg0 == lower) {
max = answer;
answer = random.nextInt((max-1) - min);
buttonTextView.setText(answer);
}
}
答案 0 :(得分:3)
- 我的推理在哪里失败?
醇>
您使用了错误的setText()
方法。 In the TextView Docs您会看到有一个int
,这是用于检索您String
中的strings.xml
资源,因此您可以将resource id
传递给setText()
1}}。因此,resource
正在寻找id
answer
的{{1}}变量。您需要使用类似
String
buttonTextView.setText(String.valueof(answer));
或几种不同的方式之一。
- 我该怎么调试这样的东西?
醇>
当您的应用崩溃时,您的logcat会出现异常。 This answer可以帮助您阅读您的logcat。要在Eclipse中打开logcat窗口(如果尚未打开),可以执行此操作
窗口 - >显示视图 - >其他 - > Android - > logcat的
附注:
您应该将params
中的onClick()
更改为有意义的内容,以便我更改
public void onClick(View arg0)
类似
public void onClick(View v) // v for view, could also be view, btn
// whatever makes sense to you and others who may read it
您还应该比较id
点击的View
而不是View
本身。因此,您可以将其与以下内容进行比较(假设您已将arg0
更改为v
)
if (v.getId() == R.id.start) // Assuming start is the id in your xml of your Button
// this will also allow you to use a switch statement
onClick()
(min
,max
和answer
)中的变量应在onClick()
之外初始化,否则会重置为默认值每次点击我都很确定你不想要(感谢323go指出这一点)。