1

"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); 

에 위의 호출을 변경했다

답변

0

플라이,

Log.i("name", friend.getmName()); 명령문의 결과는 무엇

? 친구이 null이 아니면, rowTxt이 맞을 것입니다. 디버그를 통해 그것을 발견하십시오 ...

더 나아가 나는 당신이 자신을 dodgy view-ID라고 생각했습니다. 또는 그보기가 단지 컬렉션에 추가되지 않았을 수도 있습니다. 초기 초기화 코드가 누락 되었습니까?

건배. 키이스.

+0

Keith, 감사합니다. i-log는 친구의 이름으로 올바르게 인쇄됩니다. 어딘가에 초기화 코드가 누락되었을 수 있습니다. R.id.rowtext는 res/layout 내의 rowlayout.xml이라는 xml 파일에서 작성한 텍스트 뷰입니다. rowlayout.xml을 컬렉션에 추가하려고하지 않았습니다. 이게 필요한거야? 감사합니다 – SemperFly

+0

방금 ​​Log.i ("name", R.id.rowtext)를 실행했으며 id는 logcat에서 2131099650으로 되돌아 왔습니다. 그게 문제가 아닌 것 같아 – SemperFly

+0

그래도 IS는 2131099650 유효한 뷰 ID입니까? 내 초기 지점을 반복 : 'rowTxt'(뿐만 아니라 ID) null이 아닌지 확인하십시오; 그런 다음 ID가 유효한지 (여기서는 알 수 없음) '필수 뷰'가 사실 'rowView'에 있는지 확인하십시오. 그리고 디버그 인쇄보다 IDE의 디버거를 사용해야합니다. 현대의 모든 IDE는 원격 서버를 디버깅 할 수 있습니다. 그것을 당신의 IDE 도움말이나 구글에서 찾아보십시오. – corlettk