我用以下内容发起了一项活动:
Intent intent = new Intent(
getApplicationContext(),
Hosting.class
);
intent.putExtra("host", item.getTitle());
startActivity(intent);
现在我在这个活动上有5个片段带有标签,在片段5上我需要获得主机字符串:
host = getArguments()。getString(" host");
(在正常活动中,我使用getIntent().getStringExtra("host")
获取此字符串,但片段中没有...
但是app崩溃了:
java.lang.RuntimeException: An error occurred while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:325)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.os.Bundle.getString(java.lang.String)' on a null object reference
为什么这样?这是我的第一个Android应用程序..
答案 0 :(得分:2)
您可能没有在片段的创建参数中设置host
字符串。你可以这样做,也可以在你的片段代码中继续使用getIntent().getStringExtra("host")
,先致电getActivity()
:
host = getActivity().getIntent().getStringExtra("host")
答案 1 :(得分:0)
当您处理片段并希望在片段和活动之间进行交互时,即,来回解析数据,检查点击等,通常建议创建一个接口并在活动中实现它。
供参考,您可以查看this video ,这是非常有帮助的