【发布时间】:2014-10-08 15:01:09
【问题描述】:
大家好
我已经为此寻找了几个小时的答案。能否请你帮忙。这真的很重要。
所以我要做的是在 Login 活动的 Asynctask 中获取一个 JSON 对象,然后将该对象发送到我将解析它的 Fragment。
这是登录活动的 Asynctask,我尝试在其中发送 JSON(我从 postrequest() 重新运行):
@Override
protected Void doInBackground(Void... params)
{
String JSON = null;
try
{
JSON = new String(postrequest());
Bundle bundle = new Bundle();
bundle.putString("jString", JSON);
Timetable fragobj = new Timetable();
fragobj.setArguments(bundle);
}
catch (IOException e)
{
e.printStackTrace();
}
}
这是我尝试在 onCreatView 中获取 JSON 的片段 (Timetable.class)
String jsonString = getArguments().getString("jString");
JSONObject jsonObject = new JSONObject(jsonString);
我的问题是,当我尝试使用 getArguments 获取 jsonString 时,总是得到 NullPointerException。
任何帮助将不胜感激。
干杯
附言希望我的帖子不要太乱XD
【问题讨论】:
-
您是在 AsyncTask 完成之前还是之后添加片段?我的猜测是您在完成之前添加了 Fragment,因此在
doInBackground()完成之前调用了onCreateView()。 -
postrequest 是否在与 doInBackground 不同的线程上运行?在这种情况下,您可能会在数据可用之前创建片段
-
崩溃日志说它是
String jsonString = getArguments().getString("jString");的NullPointer -
异步完成后,应用程序切换到另一个 Activity,在其中创建 Fragments
@Override protected void onPostExecute(Void result) { Intent switcher = new Intent(Login.this, MainActivity.class); Login.this.startActivity(switcher); } -
您应该在 onPostExecute 中创建片段
标签: java android json android-fragments android-asynctask