【发布时间】:2012-06-30 10:06:14
【问题描述】:
异常发生在“rowTxt.setText”行上,我终其一生都无法弄清楚原因。
这是我的代码
@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;
}
Logcat 输出:
04-24 04:07:14.093: DEBUG/AndroidRuntime(553): 关闭 VM 04-24 04:07:14.093: WARN/dalvikvm(553): threadid=1: 线程以未捕获的异常退出(组=0x4001d800) 04-24 04:07:14.152:错误/AndroidRuntime(553):致命异常:主要 04-24 04:07:14.152: 错误/AndroidRuntime(553): java.lang.NullPointerException 04-24 04:07:14.152: 错误/AndroidRuntime(553): 在 com.friendsapp.FriendsArrayAdapter.getView(FriendsArrayAdapter.java:46) 04-24 04:07:14.152: 错误/AndroidRuntime(553): 在 android.widget.AbsListView.obtainView(AbsListView.java:1315) 04-24 04:07:14.152: 错误/AndroidRuntime(553): 在 android.widget.ListView.makeAndAddView(ListView.java:1727) 04-24 04:07:14.152: 错误/AndroidRuntime(553): 在 android.widget.ListView.fillDown(ListView.java:652) 04-24 04:07:14.152: 错误/AndroidRuntime(553): 在 android.widget.ListView.fillFromTop(ListView.java:709) 04-24 04:07:14.152: 错误/AndroidRuntime(553): 在 android.widget.ListView.layoutChildren(ListView.java:1580) 04-24 04:07:14.152: 错误/AndroidRuntime(553): 在 android.widget.AbsListView.onLayout(AbsListView.java:1147) 04-24 04:07:14.152: 错误/AndroidRuntime(553): 在 android.view.View.layout(View.java:7035) 04-24 04:07:14.152: 错误/AndroidRuntime(553): 在 android.widget.LinearLayout.setChildFrame(LinearLayout.java:1249) 04-24 04:07:14.152: 错误/AndroidRuntime(553): 在 android.widget.LinearLayout.layoutVertical(LinearLayout.java:1125) 04-24 04:07:14.152: 错误/AndroidRuntime(553): 在 android.widget.LinearLayout.onLayout(LinearLayout.java:1042) 04-24 04:07:14.152: 错误/AndroidRuntime(553): 在 android.view.View.layout(View.java:7035) 04-24 04:07:14.152: 错误/AndroidRuntime(553): 在 android.widget.FrameLayout.onLayout(FrameLayout.java:333) 04-24 04:07:14.152: 错误/AndroidRuntime(553): 在 android.view.View.layout(View.java:7035) 04-24 04:07:14.152: 错误/AndroidRuntime(553): 在 android.widget.LinearLayout.setChildFrame(LinearLayout.java:1249) 04-24 04:07:14.152: 错误/AndroidRuntime(553): 在 android.widget.LinearLayout.layoutVertical(LinearLayout.java:1125) 04-24 04:07:14.152: 错误/AndroidRuntime(553): 在 android.widget.LinearLayout.onLayout(LinearLayout.java:1042) 04-24 04:07:14.152: 错误/AndroidRuntime(553): 在 android.view.View.layout(View.java:7035) 04-24 04:07:14.152: 错误/AndroidRuntime(553): 在 android.widget.FrameLayout.onLayout(FrameLayout.java:333) 04-24 04:07:14.152: 错误/AndroidRuntime(553): 在 android.view.View.layout(View.java:7035) 04-24 04:07:14.152: 错误/AndroidRuntime(553): 在 android.view.ViewRoot.performTraversals(ViewRoot.java:1045) 04-24 04:07:14.152: 错误/AndroidRuntime(553): 在 android.view.ViewRoot.handleMessage(ViewRoot.java:1727) 04-24 04:07:14.152: 错误/AndroidRuntime(553): 在 android.os.Handler.dispatchMessage(Handler.java:99) 04-24 04:07:14.152: 错误/AndroidRuntime(553): 在 android.os.Looper.loop(Looper.java:123) 04-24 04:07:14.152: 错误/AndroidRuntime(553): 在 android.app.ActivityThread.main(ActivityThread.java:4627) 04-24 04:07:14.152: 错误/AndroidRuntime(553): 在 java.lang.reflect.Method.invokeNative(Native Method) 04-24 04:07:14.152: 错误/AndroidRuntime(553): 在 java.lang.reflect.Method.invoke(Method.java:521) 04-24 04:07:14.152: 错误/AndroidRuntime(553): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 04-24 04:07:14.152: 错误/AndroidRuntime(553): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 04-24 04:07:14.152:错误/AndroidRuntime(553):在 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:调试/dalvikvm(553):GC_FOR_MALLOC 在 113 毫秒内释放了 5842 个对象/457336 个字节 04-24 04:07:18.732: INFO/Process(553): 发送信号。 PID:553 SIG:9 04-24 04:07:18.772: INFO/WindowManager(65): WIN DEATH: Window{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: Window{44f78f88 com.friendsapp/com.friendsapp.FriendsActivity paused=false} 04-24 04:07:26.814: WARN/ActivityManager(65): HistoryRecord{44e9c3c8 com.friendsapp/.FriendsActivity} 的活动销毁超时 04-24 04:12:07.102: DEBUG/SntpClient(65): request time failed: java.net.SocketException: Address family not supported by protocol
编辑:我在 corlettk 的帮助下解决了这个问题。简而言之,我是这样分配我的 listadapter 的:
FriendsArrayAdapter fAdapter = new FriendsArrayAdapter(FriendsActivity.this, android.R.simple_list_item_1, mFriendsList);
我这样做是因为最初我有一个不能容纳我的 Friend 对象的通用列表适配器;从来没想过要改。
因此,当 setAdapter 进入我的 FriendsArrayAdapter 时,它会在 simple_list_item_1 的 id 中搜索 R.id.rowtext,但没有找到。解决方法是将上述调用更改为
FriendsArrayAdapter fAdapter = new FriendsArrayAdapter(FriendsActivity.this, R.layout.row_layout, mFriendsList);
(row_layout 是我的 XML 文件的名称)
【问题讨论】:
标签: java android listview facebook-graph-api android-arrayadapter