Noob有多个Android问题

时间:2012-12-30 23:32:30

标签: android arrays string button onclicklistener

所以,我从来没有接触过我生活中的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并且仍在尝试编写程序的人,请告诉我出错的地方以及如何确保将来不会出错。提前感谢所有人。

2 个答案:

答案 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);
        }

    });
}

请记得检查大写和错过的字母。

  1. 该方法为setOnClickListener而不是setonclicklistener
  2. 侦听器界面为OnClickListener而非onClickListener
  3. 您需要将TextView定义为final final TextView tv,因为它是在一个烦人的类中访问的。
  4. 方法onCreate没有正确的开括号和右括号。在}之后添加额外的});以关闭方法正文。
  5. 如果您正在使用eclipse,则可以执行CTRL + Space,它将为您提供一些自动完成选项,这有助于大小写和拼写。