我有一個int /字符串(s)從一個片段傳遞到另一個。對於我編碼的每種方式,我都會在第67行得到一個NPE(請參閱下面的67)。我不知道如果我以正確的方式解決問題,那麼請查看我的方法,並在答案中包含一些代碼。如何獲得Android openRawResource作爲變量?
Thnx。
什麼傳遞的參數:
. . .
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);
}
編輯:
我改線67 - 68按照拉夫·索德答案:
// int fileName = (Integer) null;
int fileName = args.getInt(KEY_RAW_RES);
這得到了NPE-Thnx的課程!
你爲什麼要將'null'強制轉換爲'Integer'? – kcoppock