当前位置: 首页 > 知识库问答 >
问题:

单独类中的OnClickListener不起作用

师俊健
2023-03-14

我尝试使用另一个类中的OnClickListener,但不知为什么它会给我抛出一个错误。有人能帮我解决这个问题吗?

public class TestClass extends Activity{



    View.OnClickListener l = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(getApplicationContext(),"Clicked", Toast.LENGTH_LONG).show();
        }};}

主要活动的一部分:

@Override protected void onCreate(Bundle savedInstanceState) {
           ...
           btnSpeech = (ImageButton) (findViewById(R.id.microphone));


           obj=new TestClass();
           btnSpeech.setOnClickListener(obj.l);

           ...

错误:

java.lang.RuntimeException:无法启动activity ComponentInfo{com.example.user.project/com.example.user.project.MainActivity}:java.lang.NullPoInterException:尝试在Android.app.ActivityThread.PerformLaunchActivity(ActivityThread.java:2416)的Android.app.ActivityThread.HandleLaunchActivity(ActivityThread.java:2476)的null对象引用上调用虚拟方法“void android.widget.imageButton.SetonClickListener(尝试在com.example.user.project.mainactivity.onCreate(mainactivity.java:74)在android.app.activity.performCreate(activity.java:6237)在android.app.activitythread.callactivityonCreate(activity.java:1107)在android.app.activitythread.performLaunchActivity(activitythread.java:2369)在android.app.activitythread.handleLaunchActivity(activitythread.java:2476)在null对象引用上在android.app.activitythread.-wrap11(activitythread.java) 在Android.app.ActivityThread$H.HandleMessage(ActivityThread.java:1344) 在android.os.handler.dispatchmessage(handler.java:102) 在android.os.looper.loop(looper.java:148) 在android.app.activityThread.main(activityThread.java:5417) 在java.lang.Reflect.Method.Invoke(原生方法) 

共有1个答案

魏煜祺
2023-03-14

您将得到NullPointerException,因为您的BTNSpeece为空。findViewById()返回null如果您为视图使用了错误的id,可能这就是问题所在。可以肯定的是,您的异常与OnClickListener无关。如果仔细阅读stacktrace,您会看到它表示setonClickListener()是对一个为null的对象调用的。

而且,正如Mike所评论的,您不能使用new关键字实例化活动。将startActivity()与意图一起使用,或使testclass不扩展Activity

 类似资料:
  • 问题内容: 我有单独的类来处理鼠标侦听器。但是当我在另一个类中使用它时,它不起作用,并且我还不知道如何解决这个问题。这是我的Handler类: DrawingCanvas类: StatusBar类: 和MouseEventGUI类: 当我运行该程序时,在状态栏中显示“未监听鼠标”(请参见MouseEventGUI类),希望它在画布中移动时显示鼠标光标的坐标。 [更新] 如果在同一个类中,则 可以

  • 问题内容: 我正在尝试学习react.js,但被困在“ Hello World”脚本中。 我的index.html: 和src / helloworld.js: 当我把这个代码里面的文件,它工作正常,但是当我将其移动到单独的文件中我得到的空白页,并控制台错误: 怎么了 问题答案: 您收到该错误的原因是: 您已经从本地文件系统(例如通过双击)加载了,而不是通过Web服务器加载了 JSX转换器是脚本的

  • 我有使用碎片的活动。但如果我想使用OnClickListener,我的应用程序就会崩溃。如果我不使用OnClickListener,那么一切都可以。我该如何解决这个问题呢?这是我的代码。 d/gralloc_goldfish(796):检测到没有GPU仿真的仿真程序。d/AndroidRuntime(923):Threadid=1:线程退出但未捕获异常(组=0x41465700)致命异常:Main

  • 我创建了一个新的反序列化器,以便能够将空字符串写入为null 尝试在每个用户字段上做一个注释,自定义工作,但通过在整个类上插入注释,我不能再打印Json消息 CustomExceptionHandler向我抛出以下错误:Class MethodArgumentNotValidException这是我的Kafka使用者,我唯一输入验证注释的使用者,但即使删除它也会出现同样的错误 对象映射器 有没有可

  • 我已经可以切换到iframe,然后点击图像选择[如图1所示]然后不能点击div-预览按钮[如图2-蓝色按钮]这是“应用和关闭”。 知道吗?

  • 我使用了,并在那里声明了manifestEntries。 从