【问题标题】:Android setOnClickListener does not workAndroid setOnClickListener 不起作用
【发布时间】:2013-09-25 01:05:54
【问题描述】:

我在 android 中的 toast 有点问题:/ 当button1 将被激活时,我想创建一个小吐司

这是我的代码:

MainActivity.java

package com.andruiden.toast;

import android.app.Activity;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import android.view.*;
import android.widget.*;
import com.andruiden.toast.R;

public class MainActivity extends Activity {

    //Klick Listener
    class MeinClickListener implements OnClickListener{
        public void onClick(View v){
            String text = "Es wurde geklickt";
            Toast t = Toast.makeText(v.getContext(), text, Toast.LENGTH_SHORT);

            t.show();
        }

        @Override
        public void onClick(DialogInterface dialog, int which) {
            // TODO Auto-generated method stub

        }
    }

    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //Button beim Hörer registrieren
        MeinClickListener t = new MeinClickListener();
        Button test = (Button) findViewById(R.id.button1);
        test.setOnClickListener(t);

      }
}

在线test.setOnClickListener(t);我得到错误:

The method setOnClickListener(View.OnClickListener) in the type view is not applicable to the arguments

什么意思?

我可以在这里修改代码:

test.setOnClickListener((android.view.View.OnClickListener) t);

但是当我在我的 Galaxy s2 上运行 .apk 时,它什么也没有发生......:/

对不起我的英语不好xD

【问题讨论】:

  • 您没有在布局文件中设置 onClick 是否有特殊原因?将android:onClick"YOUR_METHOD_NAME" 添加到按钮的布局信息中正是您想要做的。

标签: java android onclicklistener


【解决方案1】:

请从您的导入部分中删除这些行:

import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;

这些是对话界面

改用这个:

import android.view.View.OnClickListener;

你的班级应该是:

    class MeinClickListener implements OnClickListener
{
    public void onClick(View v)
    {
        String text = "Es wurde geklickt";
        Toast t = Toast.makeText(v.getContext(), text, Toast.LENGTH_SHORT);

        t.show();
    }

}

【讨论】:

    【解决方案2】:

    您对错误的OnClickListener 进行了子类化(您从DialogInterface 获得了点击监听器)。

    首先,去掉 DialogInterface 导入并将您的点击侦听器子类替换为:

    //Klick Listener
    class MeinClickListener implements View.OnClickListener{
        @Override
        public void onClick(View v){
            String text = "Es wurde geklickt";
            Toast t = Toast.makeText(v.getContext(), text, Toast.LENGTH_SHORT);
    
            t.show();
        }
    }
    

    【讨论】:

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