Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/199.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中的一个按钮两个侦听器_Java_Android - Fatal编程技术网

java中的一个按钮两个侦听器

java中的一个按钮两个侦听器,java,android,Java,Android,我试图为一个按钮设置两个侦听器。这是我的密码: 这是主代码 public class LoggingEventsActivity extends Activity implements OnClickListener { /** Called when the activity is first created. */ @Override public void onCrea

我试图为一个按钮设置两个侦听器。这是我的密码: 这是主代码

            public class LoggingEventsActivity extends Activity  implements OnClickListener {
                /** Called when the activity is first created. */
                @Override
                public void onCreate(Bundle savedInstanceState) {
                    super.onCreate(savedInstanceState);
                    setContentView(R.layout.main);

                    temp obj = new temp(R.id.button1,this);

                    View continueButton = findViewById(R.id.button1);
                    continueButton.setOnClickListener(this);
                }

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub

                    final TextView t=(TextView)findViewById(R.id.editText1);
                    t.setText("hello world");

                }
            }
这是一个类,我在主代码中创建了一个对象:

            public class temp extends Activity implements OnClickListener{


                public temp(int id, LoggingEventsActivity  ref){
                    try{

                    View continueButton = findViewById(id);
                    continueButton.setOnClickListener(ref);
                    }
                    catch (Exception e){
                        e.printStackTrace();
                    }
                }

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    final TextView t=(TextView)findViewById(R.id.editText1);
                    t.append("extra");
                }  

            }
我不断得到一个空指针异常,这里是logcat转储:

            11-15 11:08:29.589: W/System.err(24268): java.lang.NullPointerException
            11-15 11:08:29.605: W/System.err(24268):    at android.app.Activity.setContentView(Activity.java:1835)
            11-15 11:08:29.616: W/System.err(24268):    at events.log.temp.<init>(temp.java:15)
            11-15 11:08:29.635: W/System.err(24268):    at events.log.LoggingEventsActivity.onCreate(LoggingEventsActivity.java:17)
            11-15 11:08:29.655: W/System.err(24268):    at android.app.Activity.performCreate(Activity.java:4465)
            11-15 11:08:29.664: W/System.err(24268):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
            11-15 11:08:29.675: W/System.err(24268):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919)
            11-15 11:08:29.685: W/System.err(24268):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980)
            11-15 11:08:29.696: W/System.err(24268):    at android.app.ActivityThread.access$600(ActivityThread.java:122)
            11-15 11:08:29.704: W/System.err(24268):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146)
            11-15 11:08:29.715: W/System.err(24268):    at android.os.Handler.dispatchMessage(Handler.java:99)
            11-15 11:08:29.725: W/System.err(24268):    at android.os.Looper.loop(Looper.java:137)
            11-15 11:08:29.735: W/System.err(24268):    at android.app.ActivityThread.main(ActivityThread.java:4340)
            11-15 11:08:29.744: W/System.err(24268):    at java.lang.reflect.Method.invokeNative(Native Method)
            11-15 11:08:29.766: W/System.err(24268):    at java.lang.reflect.Method.invoke(Method.java:511)
            11-15 11:08:29.784: W/System.err(24268):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
            11-15 11:08:29.784: W/System.err(24268):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
            11-15 11:08:29.795: W/System.err(24268):    at dalvik.system.NativeStart.main(Native Method)
            11-15 11:08:37.355: D/gralloc_goldfish(24268): Emulator without GPU emulation detected.
            11-15 11:09:34.365: D/dalvikvm(24268): Debugger has detached; object registry had 441 entries
            11-15 11:14:20.436: W/System.err(24548): java.lang.NullPointerException
            11-15 11:14:20.445: W/System.err(24548):    at android.app.Activity.findViewById(Activity.java:1794)
            11-15 11:14:20.445: W/System.err(24548):    at events.log.temp.<init>(temp.java:15)
            11-15 11:14:20.445: W/System.err(24548):    at events.log.LoggingEventsActivity.onCreate(LoggingEventsActivity.java:17)
            11-15 11:14:20.455: W/System.err(24548):    at android.app.Activity.performCreate(Activity.java:4465)
            11-15 11:14:20.455: W/System.err(24548):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
            11-15 11:14:20.455: W/System.err(24548):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919)
            11-15 11:14:20.455: W/System.err(24548):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980)
            11-15 11:14:20.455: W/System.err(24548):    at android.app.ActivityThread.access$600(ActivityThread.java:122)
            11-15 11:14:20.455: W/System.err(24548):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146)
            11-15 11:14:20.455: W/System.err(24548):    at android.os.Handler.dispatchMessage(Handler.java:99)
            11-15 11:14:20.465: W/System.err(24548):    at android.os.Looper.loop(Looper.java:137)
            11-15 11:14:20.465: W/System.err(24548):    at android.app.ActivityThread.main(ActivityThread.java:4340)
            11-15 11:14:20.465: W/System.err(24548):    at java.lang.reflect.Method.invokeNative(Native Method)
            11-15 11:14:20.475: W/System.err(24548):    at java.lang.reflect.Method.invoke(Method.java:511)
            11-15 11:14:20.475: W/System.err(24548):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
            11-15 11:14:20.475: W/System.err(24548):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
            11-15 11:14:20.475: W/System.err(24548):    at dalvik.system.NativeStart.main(Native Method)
11-15 11:08:29.589:W/System.err(24268):java.lang.NullPointerException
11-15 11:08:29.605:W/System.err(24268):位于android.app.Activity.setContentView(Activity.java:1835)
11-15 11:08:29.616:W/System.err(24268):at events.log.temp.(临时java:15)
11-15 11:08:29.635:W/System.err(24268):at events.log.LoggingEventsActivity.onCreate(LoggingEventsActivity.java:17)
11-15 11:08:29.655:W/System.err(24268):位于android.app.Activity.performCreate(Activity.java:4465)
11-15 11:08:29.664:W/System.err(24268):位于android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
11-15 11:08:29.675:W/System.err(24268):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919)
11-15 11:08:29.685:W/System.err(24268):位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980)
11-15 11:08:29.696:W/System.err(24268):位于android.app.ActivityThread.access$600(ActivityThread.java:122)
11-15 11:08:29.704:W/System.err(24268):位于android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146)
11-15 11:08:29.715:W/System.err(24268):位于android.os.Handler.dispatchMessage(Handler.java:99)
11-15 11:08:29.725:W/System.err(24268):位于android.os.Looper.loop(Looper.java:137)
11-15 11:08:29.735:W/System.err(24268):位于android.app.ActivityThread.main(ActivityThread.java:4340)
11-15 11:08:29.744:W/System.err(24268):位于java.lang.reflect.Method.invokenactive(本机方法)
11-15 11:08:29.766:W/System.err(24268):位于java.lang.reflect.Method.invoke(Method.java:511)
11-15 11:08:29.784:W/System.err(24268):位于com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
11-15 11:08:29.784:W/System.err(24268):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
11-15 11:08:29.795:W/System.err(24268):在dalvik.System.NativeStart.main(本机方法)
11-15 11:08:37.355:D/gralloc_金鱼(24268):未检测到GPU仿真的仿真器。
11-15 11:09:34.365:D/dalvikvm(24268):调试器已分离;对象注册表有441个条目
11-15 11:14:20.436:W/System.err(24548):java.lang.NullPointerException
11-15 11:14:20.445:W/System.err(24548):位于android.app.Activity.findViewById(Activity.java:1794)
11-15 11:14:20.445:W/System.err(24548):at events.log.temp.(临时java:15)
11-15 11:14:20.445:W/System.err(24548):at events.log.LoggingEventsActivity.onCreate(LoggingEventsActivity.java:17)
11-15 11:14:20.455:W/System.err(24548):位于android.app.Activity.performCreate(Activity.java:4465)
11-15 11:14:20.455:W/System.err(24548):位于android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
11-15 11:14:20.455:W/System.err(24548):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919)
11-15 11:14:20.455:W/System.err(24548):位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980)
11-15 11:14:20.455:W/System.err(24548):在android.app.ActivityThread.access$600(ActivityThread.java:122)
11-15 11:14:20.455:W/System.err(24548):在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146)
11-15 11:14:20.455:W/System.err(24548):位于android.os.Handler.dispatchMessage(Handler.java:99)
11-15 11:14:20.465:W/System.err(24548):位于android.os.Looper.loop(Looper.java:137)
11-15 11:14:20.465:W/System.err(24548):位于android.app.ActivityThread.main(ActivityThread.java:4340)
11-15 11:14:20.465:W/System.err(24548):位于java.lang.reflect.Method.invokenactive(本机方法)
11-15 11:14:20.475:W/System.err(24548):位于java.lang.reflect.Method.invoke(Method.java:511)
11-15 11:14:20.475:W/System.err(24548):位于com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
11-15 11:14:20.475:W/System.err(24548):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
11-15 11:14:20.475:W/System.err(24548):在dalvik.System.NativeStart.main(本机方法)

您不能将
活动实例化为new,您应该使用
startActivity(Intent)
启动活动,第二件事是,您应该在清单文件中声明它,如下所示:


注意:在活动
TempActivity
中,您应该重写方法
onCreate()
以初始化视图等。

您应该使用
CompositeListener
模式。我一直在使用它,因为我想分离关注点,让我的听众在外部类中,而不是匿名

其基本思想是拥有一个唯一的侦听器,该侦听器将其所有
onClick
调用委托给它引用的所有您想要的侦听器。最美妙的是,你可以将这种模式应用于任何类型的监听器(甚至是你的自定义监听器)

(以下内容是从SO编辑器中的内存中快速编码的,它可能包含语法错误,但会给您一个想法)

然后将其添加到按钮:

Button continueButton = (Button) findViewById(R.id.button1);
continueButton.setOnClickListener(myListener);    

好的,一种可能的解决方法是,单击按钮创建两个不同的线程,让每个线程执行其中一个操作

第二种可能的解决方案是使用main方法创建所谓的Logger类,并在计算机的某个端口上实现它,所以
OnClickListener myListener = new CompositeOnClickListener(listener1, listener2, listener3);
Button continueButton = (Button) findViewById(R.id.button1);
continueButton.setOnClickListener(myListener);