1

所以,我一生中从未接触过 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(){}) 未定义类型 Button
2) onClickListener 无法解析为类型
3) 无法引用非最终变量tv 在以不同方法定义的内部类中
4) 语法错误

前两个在同一行,btnClick.setonclickListener(new onClickListner(){。
第三个在 tv.setText(q);
第四个在 });

我猜前三个的分辨率将解决第四个。如果有人愿意帮助那些不了解 Java 并且仍在尝试编写程序的人,请让我知道我哪里出错了,以及如何确保我将来不会出错。提前感谢大家。

4

2 回答 2

2

1) Button 类型的方法 setonclickListener(new onClickListner(){}) 未定义

是的。您正在寻找的方法称为setOnClickListener.

2) onClickListener 无法解析为类型

您要查找的类型是OnClickListener. 不仅你写了一个小写字母o,你也错过了一个e

3) 不能在以不同方法定义的内部类中引用非最终变量 tv

这就是Java的工作方式。如果你想tv在你的匿名中访问 sayOnClickListener然后声明final TextView tv.

4) 语法错误

OnClickListener应该调用for 的方法onClick

于 2012-12-30T23:36:07.860 回答
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没有正确的打开和关闭大括号。在关闭方法体}之后添加一个额外的。});

如果您使用的是 eclipse,您可以使用CTRL+ Space,这将为您提供一些自动完成选项,这有助于大小写和拼写。

于 2012-12-30T23:40:21.277 回答