【问题标题】:Noob has multiple android problems [closed]Noob有多个android问题[关闭]
【发布时间】:2012-12-30 23:32:29
【问题描述】:

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

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

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

【问题讨论】:

  • 简答:大小写和拼写问题。
  • 谢谢!似乎早上 5:30 不是在没有先验知识的情况下潜入 Java 的最佳时间......谢谢你帮助我

标签: android arrays string button onclicklistener


【解决方案1】:

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

是的,是的。您要查找的方法称为setOnClickListener

2) onClickListener 无法解析为类型

您要查找的类型是OnClickListener。不仅你写了一个小写的o,你还漏掉了一个e

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

这正是 Java 的工作方式。如果你想在你的匿名OnClickListener 中访问说tv,那么声明final TextView tv

4) 语法错误

OnClickListener 的方法应该被称为onClick

【讨论】:

  • 谢谢!看来我确实错过了那个“e”......现在留下了错误 4......
  • 您还没有关闭onCreate() { 方法。在});后面加一个}。当您忘记关闭此类内容时,使用适当的缩进将帮助您可视化。 :)
  • 去吧,谢谢。我需要多加注意。而且,你知道,学习 Java...
【解决方案2】:

试试这个:

@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,这将为您提供一些自动完成选项,有助于大小写和拼写。

【讨论】:

  • 仍然出现错误 1、2 和 4...我检查了我的大小写,并确保我没有遗漏任何字母...我已经看到很多同样问题的问题,但他们似乎都已经解决了,而我的还没有……我错过了导入还是什么?
  • 看起来您确实有正确的导入...如果您使用的是 IDE(例如 Eclipse),如果您“鼠标悬停”代码行,它是否提供任何自动修复?
  • 我正在使用 Eclipse,但它不是... K-Ballo 和您帮助我解决了前 3 个错误...不确定第 4 个错误在哪里...
  • 我想通了,你忘了关闭方法 onCreate 的大括号。尝试在 }); 之后添加另一个右大括号。
  • 试过了...还是报错
猜你喜欢
  • 2013-05-08
  • 2021-09-26
  • 2019-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-26
  • 1970-01-01
相关资源
最近更新 更多