APIからの情報をFragment
にロードします。FragmentsでgetSupportLoaderManager()を使用するにはどうすればよいですか?
私はgetSupportLoaderManager()
を使用するが、エラーが発生している:私はこの使用onActivityCreated()
の検索が、私はNullPointerException
を持って
)getSupportLoaderManager(:
すると、メソッドを解決できません。
問題を解決するのに手伝ってもらえますか?
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()'のコードを見ることができないので、私はあなたの質問のこの部分を理解していません。 – 0X0nosugar
私はonActivityCreated()をオーバーライドする必要があることがわかっている問題を検索し、そのメソッドでgetLoaderManager()を記述しなければならないことを意味します。initLoader(0、null、getContext())。私はそれを書いたが、私はNULLポインタ例外があります。 – ShahidaTalib
よろしくお願いします。なぜNPEを取得したのかを知りたい場合は、Logcatからエラーメッセージを共有する必要があります。それで、たぶんnullが正確に何かを見ることができます。 – 0X0nosugar