あるフラグメントから別のフラグメントに渡される int/string(s) があります。コーディングする方法ごとに、67 行目に NPE が表示されます (67 が下にある場所を参照)。正しい方法で行っているかどうかわかりませんので、私の方法を調べて、回答にコードを含めてください。
ありがとうございます。
引数を渡すもの:
. . .
int rawRes = R.raw.regulatory_list;//<--THIS IS THE RES I NEED TO PASS
args.putInt("KEY_RAW_RES", rawRes);
boolean isRawRes = true;
args.putBoolean("KEY_IS_RAW_RES", isRawRes);
ListViewFragment lvf = new ListViewFragment();
lcFT.replace(R.id.discriptionListContainer, lvf).commit();
lvf.setArguments(args);
. . .
ListViewFragment の onActivityCreated:
. . .
private static final String KEY_URL = "KEY_URL";
private static final String KEY_IS_RAW_RES = "KEY_IS_RAW_RES";
private static final String KEY_RAW_RES = "KEY_RAW_RES";
. . .
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
// Get the string to query from last Fragment and pass it to this
// Fragment
Bundle args = this.getArguments();
String url = args.getString(KEY_URL);
boolean rawRes = args.getBoolean(KEY_IS_RAW_RES);
int fileName = (Integer) null;//<--THIS IS LINE 67!!
fileName = args.getInt(KEY_RAW_RES);
this.runJsonFile(url, jsonSrc, fileName);
}
private void runJsonFile(String url, boolean rawRes, int fileName) {
if (rawRes == true) {
getFromRawRes(fileName);
} else {
getFromURL(url);
}
}
private void getFromRawRes(int fileName) {
// InputStream file = getResources().openRawResource(R.raw.regulatory_list);
InputStream file = getResources().openRawResource(fileName);
JSONParser jParser = new JSONParser();
JSONArray json = jParser.getJSONFromFile(file);
callback(json);
}
編集:
Raghav Soodの回答に従って、67行目から68行目を次のように変更します。
// int fileName = (Integer) null;
int fileName = args.getInt(KEY_RAW_RES);
これにより、クラスはNPEを通過しました-Thnx!!