为什么我的应用在使用 onclicklistener 时崩溃?

Why my app is crashing while using onclicklistener?

提问人:Aditya Patel 提问时间:9/20/2019 最后编辑:PhantômaxxAditya Patel 更新时间:9/20/2019 访问量:457

问:

我尝试分别从两个不同的按钮打开两个活动,但是当我运行我的应用程序时,它会立即崩溃。请帮忙,我对android编程知之甚少。

这是我的活动代码,其中两个按钮都位于其中:

  @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_b);
    video1=(VideoView)findViewById(R.id.video1);
    b1=(Button)findViewById(R.id.button);
    b2=(Button)findViewById(R.id.button2) ;
    Uri u=Uri.parse("android.resource://"+getPackageName()+"/"+R.raw.video2);
    video1.setVideoURI(u);
    video1.start();
    video1.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
        @Override
        public void onPrepared(MediaPlayer mediaPlayer) {
            mediaPlayer.setLooping(true);
        }

    });
    b2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            startActivity(new Intent(ActivityB.this,LoginPage.class));
            overridePendingTransition(R.anim.fadein,R.anim.fadeout);
        }
    });
    b1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            startActivity(new Intent(ActivityB.this,login.class));
            overridePendingTransition(R.anim.fadein,R.anim.fadeout);
        }
    });

}

这是日志猫:

2019-09-20 15:06:48.417 4196-4196/com.example.splash E/Android运行时:致命异常:主 进程:com.example.splash,PID:4196 java.lang.RuntimeException:无法启动活动 ComponentInfo{com.example.splash/com.example.splash.ActivityB}:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)” 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3121) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3260) 在 android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) 在 android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) 在 android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1976) 在 android.os.Handler.dispatchMessage(Handler.java:106) 在android.os.Looper.loop(Looper.java:193) 在 android.app.ActivityThread.main(ActivityThread.java:6912) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:860) 原因:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)” 在 com.example.splash.ActivityB.onCreate(ActivityB.java:42) 在 android.app.Activity.performCreate(Activity.java:7144) 在 android.app.Activity.performCreate(Activity.java:7135) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1293) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3101) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3260) 在 android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) 在 android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) 在 android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1976) 在 android.os.Handler.dispatchMessage(Handler.java:106) 在android.os.Looper.loop(Looper.java:193) 在 android.app.ActivityThread.main(ActivityThread.java:6912) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:860)

以下是activity_b.xml:

<VideoView
    android:id="@+id/video1"
    android:layout_width="0dp"
    android:layout_height="0dp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="1.0"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="0.0" />

<Button
    android:id="@+id/button"
    android:layout_width="159dp"
    android:layout_height="55dp"
    android:background="@android:color/holo_green_light"
    android:fontFamily="@font/maven_pro"
    android:text="GET STARTED"
    android:textColor="#FFFFFF"
    app:layout_constraintBottom_toBottomOf="@+id/video1"
    app:layout_constraintEnd_toEndOf="@id/video1"
    app:layout_constraintHorizontal_bias="0.47"
    app:layout_constraintStart_toStartOf="@id/video1"
    app:layout_constraintTop_toTopOf="@+id/video1"
    app:layout_constraintVertical_bias="0.887" />

<Button
    android:id="@+id/button2"
    android:layout_width="97dp"
    android:layout_height="29dp"
    android:background="@drawable/mybutton"
    android:fontFamily="@font/maven_pro"
    android:text="Login"
    android:textColor="#FFFFFF"
    app:layout_constraintBottom_toBottomOf="@+id/video1"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.458"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="0.707" />
Android-intent nullpointerException 崩溃 onClickListener

评论

0赞 lfpp 9/20/2019
您是否将活动包含在 android 清单中?
1赞 a_local_nobody 9/20/2019
从 Logcat 发布日志
1赞 Vladyslav Matviienko 9/20/2019
不幸的是,MyApp 已停止的可能副本。我该如何解决这个问题?
1赞 Keith Kirk 9/20/2019
请在您的帖子中包含R.layout.activity_b布局文件的 xml 内容。这看起来像是未分配 b1 或 b2 的问题,但没有我无法确认的 xml 布局。
1赞 Phantômaxx 9/20/2019
什么是 NullPointerException 的可能重复项,以及如何修复它?

答:

0赞 Keith Kirk 9/20/2019 #1

b1=(Button)findViewById(R.id.botton);

应该是:

b1=(Button)findViewById(R.id.button);

因此,由于无法识别 R.id.botton,因此 b1 为 null,因此当您尝试将单击时侦听器附加到该指针时,会引发 null 指针。

评论

0赞 Aditya Patel 9/20/2019
尝试过兄弟仍然无法正常工作,并且应用程序在单击按钮 B2 而不是 B1 时崩溃
1赞 Keith Kirk 9/20/2019
日志中显示的崩溃是在创建活动期间发生的。如果您现在能够单击一个按钮,则意味着该活动已完成,并且没有问题。单击导致崩溃的按钮与您发布的问题不同。