У меня есть метод ниже в классе под названием Animals.javaNull Pointer метод Exception вызова в другом классе
public String loadJSONFromAsset()
Я с целью повторного использования этого в моем файле AnimalInformation.java, или, возможно, в конце концов положить это в своем собственном файле .java, но когда я это сделал, у меня все же был тот же результат.
Для вызова этого я использую
Animals jsonLoader = new Animals();
try {
JSONArray mainNode = new JSONArray(jsonLoader.loadJSONFromAsset()); // call the connection to json
if(mainNode != null) //puts the values into an array
{
for(int i=0;i<mainNode.length();i++)
{
JSONObject eachObject = mainNode.getJSONObject(i);
String location = eachObject.getString("zooLocation");
}
}
}
catch (JSONException e)
{
e.printStackTrace();
}
Так что я звоню метод в JSONArray, но я думаю, что здесь это вызывает исключения нулевого указателя.
03-04 15:31:52.700 1735-1735/com.myzooo.zoome E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.myzooo.zoome, PID: 1735
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.myzooo.zoome/com.myzooo.zoome.AnimalInformation}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
at android.app.ActivityThread.access$800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at android.content.ContextWrapper.getAssets(ContextWrapper.java:83)
at com.myzooo.zoome.Animals.loadJSONFromAsset(Animals.java:177)
at com.myzooo.zoome.AnimalInformation.onCreate(AnimalInformation.java:28)
at android.app.Activity.performCreate(Activity.java:5231)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
Любая помощь будет оценена, так как я немного потерял сейчас из-за того, как я пытаюсь использовать его, и я не совсем уверен, что это правильный способ пойти об этом. Спасибо.
Редактировать: loadJSONFromAssets() строка 177 - InputStream is = getAssets(). Open ("animals.json");
public String loadJSONFromAsset() {
StringBuilder stringBuilder = new StringBuilder();
try {
InputStream is = getAssets().open("animals.json");
BufferedReader bufferedReader = new BufferedReader(
new InputStreamReader(is));
String line;
while ((line = bufferedReader.readLine()) != null) {
stringBuilder.append(line);
}
bufferedReader.close();
Log.d("X", "Response Ready:" + stringBuilder.toString());
return stringBuilder.toString();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
Нам нужно будет увидеть «AnimalInformation» и многое другое из stacktrace, чтобы помочь. – Emmanuel
HAve вы создали конструктор 'JSONArray' ** **, имеющий один параметр ** String **? – Apurva
'jsonLoader.loadJSONFromAsset()', вы можете распечатать его раньше и посмотреть, что он возвращает? –