隐式意图-java.lang.NullPointerException:尝试在null对象引用上调用虚拟方法


java.lang.NullPointerException: Attempt to invoke virtual method 'android.app.ActivityThread$ApplicationThread android.app.ActivityThread.getApplicationThread()' on a null object reference

当我试图打开一个隐含意图的链接时,我会遇到这个错误。我在Settings.kt活动中通过ImageView上的setOnClcikListener从它的适配器类SettingsAdapter.kt调用openUrl(url: String)

设置适配器.kt

private val settings = Settings()
youtubeLink.setOnClickListener {
val url = "https://www.youtube.com/watch?v=i-0FtaAadeM"
settings.openUrl(url)
}

设置.kt活动

fun openUrl(url: String) {
val intent = Intent(Intent.ACTION_VIEW,Uri.parse(url))
startActivity(intent)
}

您采用了错误的方法。你可以用两种方法做到这一点。

  1. 您可以直接调用适配器中的代码片段

    youtubeLink.setOnClickListener {
    val url = "https://www.youtube.com/watch?v=i-0FtaAadeM"
    val intent = Intent(Intent.ACTION_VIEW,Uri.parse(url))
    context.startActivity(intent)
    }
    
  2. 您可以在适配器中创建回调,并在活动中实现

    private OnSettingsListener listener;
    void setOnSttingListener(OnSettingsListener listener){
    this.listener = listener;
    }
    youtubeLink.setOnClickListener {
    val url = "https://www.youtube.com/watch?v=i-0FtaAadeM"
    listener.onSettingClick(url);
    }
    interface OnSettingsListener {  
    void onSettingClick(String url);     
    }
    

    在你的活动中,实现这个监听器

    Settings implements SettingsAdapter.OnSettingsListener {
    @Override
    public void onSettingClick(String url) {
    openUrl(url)
    }
    }
    

最新更新