【问题标题】:Android onClickListener - Android Studio bug or my own mistake?Android onClickListener - Android Studio 错误还是我自己的错误?
【发布时间】:2014-07-17 10:45:22
【问题描述】:

之前的 sn-p 代码是借助随机站点和 StackOverflow 的答案写下来的,但不知何故无法正常工作。我应该补充一点,我是制作应用程序的绝对初学者,而且我的 Java 经验也非常有限。

错误如下:

  • “setOnClickListener”:标记为红色。
  • “public void onClick(View v) {”:这里的“v”标记为红色,对于某些 原因。它在“String text = v.toString();”中继续显示为红色。
  • 该程序还发现我的分号在末尾是多余的 sn-p。

我在 Elementary OS 上使用 Android Studio 测试版,使用 OpenJDK。

Button button_1 = (Button) findViewById(R.id.btn_1);
    button_1.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            String text = v.toString();
            displayPassword(text);
        }
    });

我本可以犯很多错误,这是肯定的。但是,任何朝着正确方向的推动都将非常感激。

【问题讨论】:

  • 为什么是“View.OnClickListener”?您是否导入了视图和按钮类型?
  • 你去掉那个button_1.setOnClickListener(View.OnClickListener(){},只要button_1.setOnClickListener(new OnClickListener(){}就可以了
  • v.toString(),考虑一下.....
  • 一切都被导入了,在“new View.OnClickListener()”中删除View会导致错误,并且已经想到了v.toString()。 "字符串文本 = ((Button) v).getText().toString();"

标签: java android android-studio


【解决方案1】:

我的建议是:在XML文件中设置onClick,并在当前类中创建方法。

<Button
    android:id="@+id/btn_1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:onClick="click" />

public void click(View arg0) {
}

【讨论】:

    【解决方案2】:

    同意 Graph 你应该@Override onClick 方法。不知道那里有什么问题。事实上,当我在 Android Studio 中输入您的示例时,我在 OnClickListener 中输入了 3 个字母,它会自动填写其余部分,包括 @Override。

     button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String text = v.toString();
                // do something with the text.
            }
        });
    

    另外,我认为 v.toString() 不会为您提供任何有用的信息。如果你想要按钮上的文本,你需要将它转换为一个按钮,然后调用 getText():

    Button button = (Button) v;
    String text = button.getText().toString();
    

    或者,你可以这样做:

    String text = ((Button)v).getText().toString();
    

    只需调用 v.toString() 即可获得该按钮的描述,而不是其上的文本。

    【讨论】:

    • 可能是我的版本中的一些缺陷,将看到更新。是的,我确实知道文本,只是为了在屏幕上显示一些内容。在我解决了我的按钮问题后不久修复了这个问题。 :)
    • 酷酷。是的,我认为这可能是您的项目设置中的一个缺陷。我想知道它是否正在导入其他类型的按钮(没有 OnClickListener 的按钮)。祝你好运。对于使用 Android Studio 的我来说,项目结构问题很常见。
    【解决方案3】:

    我相信你需要@Override onClick 方法。

    Button button_1 = (Button) findViewById(R.id.btn_1);
        button_1.setOnClickListener(new View.OnClickListener() {
        @Override  
        public void onClick(View v) {
            String text = v.toString();
            displayPassword(text);
        }
    });
    

    【讨论】:

    • 我试过@Override,被标记为红色。 “此处不允许注释”。
    【解决方案4】:

    只需按“ctrl+shift+o”并添加 1 个您在屏幕上显示的库即可解决问题

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多