【问题标题】:Android Studio Youtube API Use setOnClickListener NullPointerException [duplicate]Android Studio Youtube API 使用 setOnClickListener NullPointerException [重复]
【发布时间】:2021-08-07 08:15:11
【问题描述】:

我希望 android studio 活动使用 youtube API 播放点击按钮关闭应用程序 但是 NullpotinerException 出错... 所以我在做

  1. 检查 Google API 密钥
  2. 检查变量名
  3. 检查清单权限
  4. 检查.Jar文件enter image description here

还有其他问题吗?

此活动代码

  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:无法启动活动 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

【问题讨论】:

  • 你能不能通过这个找到你的空指针和背后的原因。如何解决它。stackoverflow.com/questions/218384/…
  • @dinkar_kumar 感谢您的反馈 我已阅读但未找到原因
  • 能否添加错误日志
  • @dinkar_kumar 添加到帖子和 处的空对象引用是活动后代码 button.setOnClickListener(new View.OnClickListener() {
  • 您为其共享 sn-p 的 xml 文件的名称是什么?

标签: java android nullpointerexception youtube youtube-api


【解决方案1】:

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

setContentView(R.layout.activity_main);

我想你忘了在上面的代码中使用正确的 XML 文件,而这个 activity_main 是一个不同的 XML,它是用于 MainActivity 之类的。

而你分享的XML中的Button、YouTubePlayerView并没有在你的ThirdActivity.中使用

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

【讨论】:

  • 我看过你的笔记,永远记住
  • 很高兴我能帮助您找出问题所在,并且还能够为您提供一些指导,如果以后再次发生这种情况会帮助您
  • 你真的需要停止重复回答。您正在为积极进行审核的人带来更多工作
  • @Zoe 我确实请求关注空指针帖子,如果您看到我评论了问题,但该人没有找到解决方案,这就是我回答的原因,我可以尝试搜索更多的问题并将它们联系起来而不是回答与此相关的问题,将确保这样做不会给其他人带来更多的工作。感谢您指出并确保不会发生这种情况
猜你喜欢
  • 2015-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-24
  • 2018-12-11
  • 1970-01-01
  • 1970-01-01
  • 2017-04-26
相关资源
最近更新 更多