所以,我从来没有接触过我生活中的Java编程(做过一点C和C ++,不记得任何事情),但我正在努力解决问题。我正在尝试制作一个Android应用程序,以便在单击按钮时显示数组中的随机字符串。到目前为止,我一直在复制片段。但是我遇到了OnClickListener的问题。
package com.example.testrun01;
import java.util.Random;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.content.res.Resources;
import android.widget.TextView;
import android.widget.Button;
import android.view.View;
import android.view.View.OnClickListener;
public class MainActivity extends Activity implements OnClickListener {
private String[] PhraseString;
private static final Random rgenerator = new Random();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView tv = (TextView) findViewById(R.id.textView1);
Button btnClick = (Button) findViewById(R.id.btnClick);
btnClick.setonclickListener(new onClickListner(){
public void onclick()
{
PhraseString = getResources().getStringArray(R.array.Phrases);
String q = PhraseString[rgenerator.nextInt(PhraseString.length)];
tv.setText(q);
}
});
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
}
让我打破错误(总共4个):
1)方法setonclickListener(new onClickListner(){})未定义类型按钮
2)onClickListener无法解析为类型
3)不能在不同方法中定义的内部类中引用非最终变量tv
4)语法错误
前两个是在同一行,btnClick.setonclickListener(new onClickListner(){。
第三个是tv.setText(q);
第四个是});
我猜测前三个解决方案将解决第四个问题。如果有人愿意帮助那些不了解Java并且仍在尝试编写程序的人,请告诉我出错的地方以及如何确保将来不会出错。提前感谢所有人。
答案 0 :(得分:2)
1)方法setonclickListener(new onClickListner(){})未定义类型Button
是的,确实如此。您要查找的方法称为setOnClickListener
。
2)onClickListener无法解析为类型
您要查找的类型是OnClickListener
。您不仅编写了小写o
,还错过了e
。
3)不能在不同方法中定义的内部类中引用非最终变量tv
这就是 Java 的工作方式。如果您想在匿名tv
中访问说OnClickListener
,请声明final TextView tv
。
4)语法错误
OnClickListener
的方法应该被称为onClick
。
答案 1 :(得分:1)
试试这个:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final TextView tv = (TextView) findViewById(R.id.textView1);
Button btnClick = (Button) findViewById(R.id.btnClick);
btnClick.setOnClickListener(new OnClickListner() {
public void onClick(View v) {
PhraseString = getResources().getStringArray(R.array.Phrases);
String q = PhraseString[rgenerator.nextInt(PhraseString.length)];
tv.setText(q);
}
});
}
请记得检查大写和错过的字母。
setOnClickListener
而不是setonclicklistener
。OnClickListener
而非onClickListener
。final TextView tv
,因为它是在一个烦人的类中访问的。onCreate
没有正确的开括号和右括号。在}
之后添加额外的});
以关闭方法正文。如果您正在使用eclipse,则可以执行CTRL
+ Space
,它将为您提供一些自动完成选项,这有助于大小写和拼写。