Android Youtube 工作室 API 使用 setOnClickListener NullPointerException

Android Studio Youtube API Use setOnClickListener NullPointerException

我想要android工作室activity使用youtubeAPI 播放点击按钮关闭应用程序 但是 NullpotinerException 错误... 所以我在做

  1. 检查GoogleAPI键
  2. 检查变量名
  3. 检查清单权限
  4. 检查 .Jar 文件enter image description here

还有其他问题吗?

这个activity代码

  public class ThirdActivity extends YouTubeBaseActivity {
    YouTubePlayerView youtubeView;
    Button button;
    YouTubePlayer.OnInitializedListener listener;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button = (Button) findViewById(R.id.youtubeButton);
        youtubeView = (YouTubePlayerView) findViewById(R.id.youtubeView);
        listener = new YouTubePlayer.OnInitializedListener() {
            @Override
            public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean b) {
                youTubePlayer.loadVideo("Ktazno7rgZg&t");
            }

            @Override
            public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) {
            }
        };
        button.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View view) {
                youtubeView.initialize("is my apikey i was check", listener);
            }
        });
    }
}

这个xml代码

    <?xml version="1.0" encoding="utf-8"?>
    <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    
    
        <com.google.android.youtube.player.YouTubePlayerView
            android:id="@+id/youtubeView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            tools:ignore="MissingConstraints"/>
    
        <Button
            android:id="@+id/youtubeButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content
            android:text="Play"
            android:textColor="#000000"
            tools:ignore="MissingConstraints" />
    </androidx.constraintlayout.widget.ConstraintLayout>

错误按摩

E/AndroidRuntime:致命异常:main 进程:com.example.myproject,PID:30726 java.lang.RuntimeException: 无法启动 activity ComponentInfo{com.example.myproject/com.example.myproject.ThirdActivity}: java.lang.NullPointerException: 尝试调用虚拟方法 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' 在空对象引用上 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3792) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3968) 在 android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85) 在 android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 在 android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:2307) 在 android.os.Handler.dispatchMessage(Handler.java:106) 在 android.os.Looper.loop(Looper.java:246) 在 android.app.ActivityThread.main(ActivityThread.java:8512) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130) 由以下原因引起:java.lang.NullPointerException:尝试在空对象引用上调用虚方法 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' 在 com.example.myproject.ThirdActivity.onCreate(ThirdActivity.java:34) 在 android.app.Activity.performCreate(Activity.java:8198) 在 android.app.Activity.performCreate(Activity.java:8182) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1309) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3765) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3968) 在 android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85) 在 android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 在 android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:2307) 在 android.os.Handler.dispatchMessage(Handler.java:106) 在 android.os.Looper.loop(Looper.java:246) 在 android.app.ActivityThread.main(ActivityThread.java:8512) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130) I/Process:发送信号。 PID:30726 SIG:9

我认为您现在可能在代码中使用了正确的 XML 文件,这是假设,但很可能是这样。 您的 ThirdActivity 正在使用

setContentView(R.layout.activity_main);

我想你忘了在上面的代码中使用正确的 XML 文件,这个 activity_main 是一个不同的 XML ,它是为 MainActivity 或其他东西准备的。

您分享的 XML 中的按钮、YouTubePlayerView 未在您的 ThirdActivity.

中使用

注意: 如果我们在不同 activity 之间复制粘贴少量代码,很容易出现此类问题,而我们没有意识到在编译时出现问题,因为当您使用其他布局时 Android studio 不会为此给出编译时错误 XML 但在 findViewById 中完全使用不同布局的不同 ID,您会得到通过这样的错误在运行时了解它。