Hello stackoverflow world! Наступает время, когда ответ, который вы ищете, еще не здесь, и вам придется спросить.Strange NullPointerException on .getFirst()
Моя проблема в том, что я проверяю нулевые значения с помощью оператора if, и я все еще получаю исключение NullPointerException.
У меня есть приложение, проверенное кем-то, и они сталкиваются с NullPointerException, но я не могу воссоздать ошибку для жизни меня. что затрудняет определение проблемы.
Это CrashReport на консоли разработчика для приложения:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.dev.admin.blacklist/com.dev.admin.blacklist.Page_RecentCalls}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2391)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2442)
at android.app.ActivityThread.access$800(ActivityThread.java:166)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1357)
at android.os.Handler.dispatchMessage(Handler.java:110)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:5387)
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:831)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:647)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at com.dev.admin.blacklist.Page_RecentCalls.getRecentContacts(Page_RecentCalls.java:110)
at com.dev.admin.blacklist.Page_RecentCalls.onCreate(Page_RecentCalls.java:32)
at android.app.Activity.performCreate(Activity.java:5363)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1088)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2335)
... 11 more
и это линия 110, которая бросает эту ошибку:
Cursor cursor = getContentResolver().query(queryUri, projection, null, null, sortOrder);
while (cursor.moveToNext())
{
String phoneNumber = cursor.getString(cursor.getColumnIndex(CallLog.Calls.NUMBER));
String title = (cursor.getString(cursor.getColumnIndex(CallLog.Calls.CACHED_NAME)));
if(phoneNumber != null && !phoneNumber.isEmpty() && !phoneNumber.equals(manager.getVoiceMailNumber().toString()))
{
if(title == null || title.isEmpty())title = "No-name";
if(recentcontacts.size() > 1)
{
String one = "";
one = recentcontacts.get(recentcontacts.size() - 1).getFirst(); //Line 110 error was here
if(!one.equals(title)) recentcontacts.add(new Object_TwoString(title,phoneNumber));
}
else recentcontacts.add(new Object_TwoString(title,phoneNumber));
}
}
cursor.close();
return recentcontacts;
}
}
public Object_TwoString(String one, String two)
{
setStrings(one,two);
}
public String[] getStrings(){ String[] strings = {firstString,secondString}; return strings;}
public String getFirst(){return firstString;}
public String getSecond(){return secondString;}
public Boolean IsContained(List<Object_TwoString> obj)
{
for(Object_TwoString ts: obj)
{
if(ts.getFirst().equals(firstString) && ts.getSecond().equals(secondString))return true;
}
return false;
}
Manager.getVoicemailNumber() может иметь значение null, поэтому .toString() будет вызывать NPE? – Jan
hmm ... Мне нужно попробовать проверить нулевой номер голосовой почты, но если бы это было так, то не возникла бы ошибка в строке, где я проверяю номер голосовой почты? (строка 105) вместо строки 110? –