"rowTxt.setText"행에서 예외가 발생하며, 내 인생에서 그 이유를 파악할 수 없습니다.SetAdapter에서 My FriendsArrayAdapter로 NullPointerException이 발생했습니다.
여기 내 코드의
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
View rowView = convertView;
if(rowView == null)
{
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
rowView = inflater.inflate(mResourceId, null);
}
Friend friend = mFriendsList.get(position);
TextView rowTxt = (TextView) rowView.findViewById(R.id.rowtext);
Log.i("name", friend.getmName());
rowTxt.setText(friend.getmName());
return rowView;
}
로그 캣 출력 :
04-24 04 : 07 : 14.093 : DEBUG/AndroidRuntime (553) : VM 04-24 4시 7분 종료 : (그룹 : 0x4001d800) 04-24 04 : 07 : 14.152 : ERROR/AndroidRuntime (553) : 치명적인 예외 : 주 04-24 04 : 경고/dalvikvm (553) : 스레드/07 : 14.152 : ERROR/AndroidRuntime (553) : java.lang.NullPointerException 04 -24 04 : 07 : 14.152 : ERROR/AndroidRuntime (553) : com.friendsapp.FriendsArrayAdapter.getView (FriendsArrayAdapter.java:46) 04-24 04 : 07 : 14.152 : ERROR/AndroidRuntime (553) : android. 위젯 .AbsListView.obtainView (AbsListView.java:1315) 04-24 04 : 07 : 14.152 : ERROR/AndroidRuntime (553) : android.widget.ListView.makeAndAddView (ListView.java:1727) 04-24 04 : 07 : 14.152 : ERROR/AndroidRuntime (553) : android.widget.ListView.fillDown (ListView.java:652) 04-24 04 : 07 : 14.152 : ERROR/AndroidRuntime (553) : android.widget.ListView. fillFromTop (ListView.java:709) 04-24 04 : 07 : 14.152 : ERROR/AndroidRuntime (553) : android.widget.ListView.layoutChildren (ListView.java:1580) 04-24 04 : 07 : 14.152 : ERROR/AndroidRuntime (553) : android.widget.AbsListView.onLayout (AbsListView.java:1147) 04-2 4 04 : 07 : 14.152 : ERROR/AndroidRuntime (553) : android.view.View.layout (View.java:7035) 04-24 04 : 07 : 14.152 : ERROR/AndroidRuntime (553) : android.widget .LinearLayout.setChildFrame (LinearLayout.java:1249) 04-24 04 : 07 : 14.152 : ERROR/AndroidRuntime (553) : android.widget.LinearLayout.layoutVertical (LinearLayout.java:1125) 04-24 04:07 : 14.152 : ERROR/AndroidRuntime (553) : android.widget.LinearLayout.onLayout (LinearLayout.java:1042) 04-24 04 : 07 : 14.152 : ERROR/AndroidRuntime (553) : android.view.View.layout (View.java:7035) 04-24 04 : 07 : 14.152 : ERROR/AndroidRuntime (553) : android.widget.FrameLayout.onLayout (FrameLayout.java:333) 04-24 04 : 07 : 14.152 : ERROR/AndroidRuntime (553) : android.view.View.layout (View.java:7035) 04-24 04 : 07 : 14.152 : ERROR/AndroidRuntime (553) : android.widget.LinearLayout.layoutVertical (LinearLayout.java:1125) 04-24 04 : 07 : 24 04 : 07 : 14.152 : ERROR/AndroidRuntime (553) : android.widget.LinearLayout.onLayout (LinearLayout.java:1042) 04-24 04 : 07 : 14.152 : ERROR/AndroidRuntime (553) : android.view에서 .View.layout (View.java:7035) 04-24 04 : 07 : 14.152 : ERROR/AndroidRuntime (553) : android.widget.FrameLayout.onLayout (FrameLayout.java:333) 04-24 04:07 : 14.152 : ERROR/AndroidRuntime (553) : android.view.View.layout (View.java:7035) 04-24 04 : 07 : 14.152 : ERROR/AndroidRuntime (553) : android.view.ViewRoot.performTraversals (ViewRoot.java:1045) 04-24 04 : 07 : 14.152 : ERROR/AndroidRuntime (553) : android.view.ViewRoot. handleMessage (ViewRoot.java:1727) 04-24 04 : 07 : 14.152 : ERROR/AndroidRuntime (553) : android.os.Handler.dispatchMessage (Handler.java:99) 04-24 04 : 07 : 14.152 : ERROR/AndroidRuntime (553) : android.os.Looper.loop (Looper.java:123) 04-24 04 : 07 : 14.152 : ERROR/AndroidRuntime (553) : android.app.ActivityThread.main (ActivityThread. java : 4627) 04-24 04 : 07 : 14.152 : ERROR/AndroidRuntime (553) : java.lang.reflect.Method.invokeNative (기본 메소드) 04-24 04 : 07 : 14.152 : ERROR/AndroidRuntime (553)) : java.lang.reflect.Method.invoke (Method.java:521) 04-24 04:07:14.152 : ERROR/AndroidRuntime (553) : com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:868) 04-24 04 : 07 : 14.152 : ERROR/AndroidRuntime (553) : com. android.internal.os.ZygoteInit.main (ZygoteInit.java:626) 04-24 04 : 07 : 14.152 : ERROR/AndroidRuntime (553) : at dalvik.system.NativeStart.main (기본 메소드) 04-24 04 : 07 : 14.182 : WARN/ActivityManager (65) : 강제 종료 활동 com.friendsapp/.FriendsActivity 04-24 04 : 07 : 14.973 : WARN/ActivityManager (65) : HistoryRecord {44e9c3c8 com.friendsapp /의 활동 일시 중지 제한 시간. FriendsActivity} 04-24 04 : 07 : 17.822 : DEBUG/dalvikvm (553) : GC_FOR_MALLOC은 5842 개 개체/457336 바이트를 113ms에서 해제했습니다. 04-24 04 : 07 : 18.732 : INFO/Process (553) : 보내는 신호. PID : 553 SIG : 9 04-24 04 : 07 : 18.772 : 정보/WindowManager (65) : WIN DEATH : 창 {4503df58 AtchDlg : com.friendsapp/com.friendsapp.FriendsActivity paused = false} 04-24 04 : 07 : 18.772 : INFO/ActivityManager (65) : com.friendsapp (pid 553) 프로세스가 종료되었습니다. 04-24 04 : 07 : 18.782 : INFO/WindowManager (65) : WIN DEATH : 창 {44f78f88 com.friendsapp/com.friendsapp.FriendsActivity paused = false} 04-24 04 : 07 : 26.814 : WARN/ActivityManager (65) : ActivityRecord {44e9c3c8 com.friendsapp/.FriendsActivity}의 활동 시간 초과가 발생했습니다. 04-24 04 : 12 : 07.102 : DEBUG/SntpClient (65) : 요청 시간 실패 : java.net.SocketException : 프로토콜에서 지원하지 않는 주소 패밀리
편집 : 나는 corlettk의 도움으로 문제를 파악했습니다. 즉, 나는 그렇게처럼 내 listadapter를 할당했다 :
FriendsArrayAdapter fAdapter = new FriendsArrayAdapter(FriendsActivity.this, android.R.simple_list_item_1, mFriendsList);
처음에 내 친구 객체를 수용하지 않은 일반적인 listadapter이 있었기 때문에 내가 이런 짓을
; 그것을 바꾸기 위해 결코 생각하지 않았다.
그래서 setAdapter가 내 FriendsArrayAdapter에 들어가면 찾을 수없는 R.id.rowtext에 대한 simple_list_item_1의 ID를 검색했습니다. 수정 프로그램 (row_layout 내 XML 파일의 이름입니다)
FriendsArrayAdapter fAdapter = new FriendsArrayAdapter(FriendsActivity.this, R.layout.row_layout, mFriendsList);
에 위의 호출을 변경했다
Keith, 감사합니다. i-log는 친구의 이름으로 올바르게 인쇄됩니다. 어딘가에 초기화 코드가 누락되었을 수 있습니다. R.id.rowtext는 res/layout 내의 rowlayout.xml이라는 xml 파일에서 작성한 텍스트 뷰입니다. rowlayout.xml을 컬렉션에 추가하려고하지 않았습니다. 이게 필요한거야? 감사합니다 – SemperFly
방금 Log.i ("name", R.id.rowtext)를 실행했으며 id는 logcat에서 2131099650으로 되돌아 왔습니다. 그게 문제가 아닌 것 같아 – SemperFly
그래도 IS는 2131099650 유효한 뷰 ID입니까? 내 초기 지점을 반복 : 'rowTxt'(뿐만 아니라 ID) null이 아닌지 확인하십시오; 그런 다음 ID가 유효한지 (여기서는 알 수 없음) '필수 뷰'가 사실 'rowView'에 있는지 확인하십시오. 그리고 디버그 인쇄보다 IDE의 디버거를 사용해야합니다. 현대의 모든 IDE는 원격 서버를 디버깅 할 수 있습니다. 그것을 당신의 IDE 도움말이나 구글에서 찾아보십시오. – corlettk