java.lang.NullPointerException: Attempt to invoke virtual method 'android.app.ActivityThread$ApplicationThread android.app.ActivityThread.getApplicationThread()' on a null object reference
I am getting this error when I am trying to open a link with implicit intent. I am calling openUrl(url: String)
in Settings.kt
activity from it's adapter class SettingsAdapter.kt
through a setOnClcikListener
on a ImageView.
SettingsAdapter.kt Class
private val settings = Settings()
youtubeLink.setOnClickListener {
val url = "https://www.youtube.com/watch?v=i-0FtaAadeM"
settings.openUrl(url)
}
Settings.kt Activity
fun openUrl(url: String) {
val intent = Intent(Intent.ACTION_VIEW,Uri.parse(url))
startActivity(intent)
}
You are following wrong approach. You can do this in two ways.
You can directly call code snippet in your adapter
youtubeLink.setOnClickListener {
val url = "https://www.youtube.com/watch?v=i-0FtaAadeM"
val intent = Intent(Intent.ACTION_VIEW,Uri.parse(url))
context.startActivity(intent)
}
You can create a callback in your adapter and implement in your activity
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);
}
In your activity, implement this listener
Settings implements SettingsAdapter.OnSettingsListener {
@Override
public void onSettingClick(String url) {
openUrl(url)
}
}