0
Android에서 문자열 배열을 목록으로 표시하려고합니다. 목록이 표시되지만 목록 끝에 스크롤하면 NullPointerException
이 표시됩니다.안드로이드에서 목록 끝에 도달하면 NullPointer 예외가 발생합니다.
이 내 ListActivity
클래스 :
12-24 09:46:58.470: E/AndroidRuntime(283): java.lang.NullPointerException
12-24 09:46:58.470: E/AndroidRuntime(283): at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:355)
12-24 09:46:58.470: E/AndroidRuntime(283): at android.widget.ArrayAdapter.getView(ArrayAdapter.java:323)
12-24 09:46:58.470: E/AndroidRuntime(283): at android.widget.AbsListView.obtainView(AbsListView.java:1294)
12-24 09:46:58.470: E/AndroidRuntime(283): at android.widget.ListView.makeAndAddView(ListView.java:1727)
12-24 09:46:58.470: E/AndroidRuntime(283): at android.widget.ListView.fillDown(ListView.java:652)
12-24 09:46:58.470: E/AndroidRuntime(283): at android.widget.ListView.fillGap(ListView.java:623)
12-24 09:46:58.470: E/AndroidRuntime(283): at android.widget.AbsListView.trackMotionScroll(AbsListView.java:2944)
12-24 09:46:58.470: E/AndroidRuntime(283): at android.widget.AbsListView.onTouchEvent(AbsListView.java:2065)
12-24 09:46:58.470: E/AndroidRuntime(283): at android.widget.ListView.onTouchEvent(ListView.java:3315)
12-24 09:46:58.470: E/AndroidRuntime(283): at android.view.View.dispatchTouchEvent(View.java:3766)
12-24 09:46:58.470: E/AndroidRuntime(283): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:897)
12-24 09:46:58.470: E/AndroidRuntime(283): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936)
12-24 09:46:58.470: E/AndroidRuntime(283): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936)
12-24 09:46:58.470: E/AndroidRuntime(283): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936)
12-24 09:46:58.470: E/AndroidRuntime(283): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1671)
12-24 09:46:58.470: E/AndroidRuntime(283): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1107)
12-24 09:46:58.470: E/AndroidRuntime(283): at android.app.Activity.dispatchTouchEvent(Activity.java:2086)
12-24 09:46:58.470: E/AndroidRuntime(283): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1655)
12-24 09:46:58.470: E/AndroidRuntime(283): at android.view.ViewRoot.handleMessage(ViewRoot.java:1785)
12-24 09:46:58.470: E/AndroidRuntime(283): at android.os.Handler.dispatchMessage(Handler.java:99)
12-24 09:46:58.470: E/AndroidRuntime(283): at android.os.Looper.loop(Looper.java:123)
12-24 09:46:58.470: E/AndroidRuntime(283): at android.app.ActivityThread.main(ActivityThread.java:4627)
12-24 09:46:58.470: E/AndroidRuntime(283): at java.lang.reflect.Method.invokeNative(Native Method)
12-24 09:46:58.470: E/AndroidRuntime(283): at java.lang.reflect.Method.invoke(Method.java:521)
12-24 09:46:58.470: E/AndroidRuntime(283): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
12-24 09:46:58.470: E/AndroidRuntime(283): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
12-24 09:46:58.470: E/AndroidRuntime(283): at dalvik.system.NativeStart.main(Native Method)
이 오해 무슨 일이 일어나고 있는지 알려 주시기 바랍니다 : 이것은 내 XML
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:textSize="20sp"
android:padding="15dp">
</TextView>
로그입니다
public class HolidayListActivity extends ListActivity
{
String res;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
ArrayList<NameValuePair> postParameters = new ArrayList<NameValuePair>();
postParameters.add(new BasicNameValuePair("future", "may be needed in future"));
String access_url = "http://127.0.0.1:8080/tt/HolidayListAction";
System.out.println("****JUST ********************* "+access_url);
String response = null;
try
{
response = CustomHttpClient.executeHttpPost(access_url, postParameters);
//response = CustomHttpClient.executeHttpGet(access_url);
res=response.toString();
String holidayArray[] = new String[res.length()];
JSONArray jsonArray = new JSONArray(res);
for (int i = 0, j=-1; i < jsonArray.length()/2; i++,j=j+2)
{
holidayArray[i] = jsonArray.getString(j+1)+", Date: "+jsonArray.getString(j+2);
}
setListAdapter(new ArrayAdapter<String>(this, R.layout.holiday_list,holidayArray));
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
.
감사합니다. 심지어 나는 범인이 for for loop라고 생각한다. 때문에 하드 코딩 된 문자열 배열을 넣어 잘 작동합니다. for 루프는 작동하지 않습니다. 심지어 단순한 for 루프는 동일한 nullpointer 예외를 제공합니다. – Vish
도움을 주셔서 감사합니다. 문제가 해결되었습니다. 배열 길이가 문제였다. holidayArray [] 길이를 jsaonArray.length()/2로 설정합니다. – Vish
답변으로 이것을 선택해야합니다. – Mafro34