【发布时间】:2017-12-21 18:24:05
【问题描述】:
我想将信息从 API 加载到 Fragment。
我使用getSupportLoaderManager(),但出现错误:
无法解析方法:getSupportLoaderManager()
我搜索这个用法onActivityCreated(),但我有NullPointerException。
你能帮我解决这个问题吗?
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
public class Business extends Fragment implements LoaderManager.LoaderCallbacks<String> {
ListView listView;
public Business() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_business, container, false);
listView = view.findViewById(R.id.list_item);
getSupportLoaderManager().initLoader(0, null, getContext()).forceLoad();
return view;
}
@Override
public Loader<String> onCreateLoader(int id, Bundle args) {
return null;
}
@Override
public void onLoadFinished(Loader<String> loader, String data) {
if (data != null && !data.isEmpty())
updateUI(data);
else
Toast.makeText(getContext(), "no internet", Toast.LENGTH_SHORT).show();
}
@Override
public void onLoaderReset(Loader<String> loader) {
}
private void updateUI(String data) {
try {
final ArrayList<ResultOfArtBusiness> results = new ArrayList<>();
JSONObject root = new JSONObject(data);
JSONObject secondObject = root.getJSONObject("response");
JSONArray firstArray = secondObject.getJSONArray("results");
for (int i = 0; i < firstArray.length(); i++) {
JSONObject objectInArray = firstArray.getJSONObject(i);
String webPublicationDate;
if (objectInArray.has("webPublicationDate"))
webPublicationDate = objectInArray.getString("webPublicationDate");
else webPublicationDate = null;
String webTitle;
if (objectInArray.has("webTitle"))
webTitle = objectInArray.getString("webTitle");
else webTitle = null;
String webUrl;
if (objectInArray.has("webUrl"))
webUrl = objectInArray.getString("webUrl");
else webUrl = null;
ResultOfArtBusiness resultOfArticle = new ResultOfArtBusiness(webTitle, webPublicationDate, webUrl);
results.add(resultOfArticle);
}
NewsAdapterBusiness adapter = new NewsAdapterBusiness(getContext(), R.layout.item_design, results);
listView.setAdapter(adapter);
} catch (JSONException e) {
e.printStackTrace();
}
}
}
【问题讨论】:
-
“我搜索一下这个使用 onActivityCreated”是什么意思?我看不到
onActivityCreated()的任何代码,所以我不明白你的这部分问题。 -
我的意思是我搜索了我发现我必须覆盖 onActivityCreated() 的问题,在该方法中我应该编写 getLoaderManager().initLoader(0, null, getContext()).forceLoad ();我写了,但我有空指针异常。
-
好的。如果你想知道为什么你得到了 NPE,你必须分享来自 Logcat 的错误消息。然后也许可以看到究竟是什么是空的。
-
java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“void android.support.v4.content.Loader.forceLoad()”
-
在 com.example.hp.newnewsapp.Fragment.Business.onActivityCreated(Business.java:44)
标签: java android android-fragments android-loadermanager