【发布时间】:2014-12-10 12:24:15
【问题描述】:
在我的应用程序中有一个导航抽屉。当在抽屉中单击任何项目时,会显示一个文本视图。我使用片段来做到这一点。到目前为止它工作正常。 现在我想在导航抽屉中单击第二个项目时显示一个列表。但它不断使应用程序崩溃。该列表是使用自定义适配器自定义的,并且是使用列表片段创建的。
在 MainActivity.java 中
private class DrawerItemClickListener implements ListView.OnItemClickListener
{
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
selectItem(position);
selectItem 方法
private void selectItem(int position)
{
int pos = position;
Fragment fragment = null;
switch (pos) {
case 0:
fragment = new FragmentSell();
break;
case 1:
fragment = new FragmentBuy();
break;
}
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).commit();
适配器
public class FragmentBuyAdapter extends ArrayAdapter<ItemBuy> {
private ArrayList<ItemBuy> objects;
public ArrayAdapter<Integer> adapter_weight;
public String weight;
public Context context;
public FragmentBuyAdapter(Context context, int textViewResourceId,
ArrayList<ItemBuy> objects) {
super(context, textViewResourceId, objects);
this.objects = objects;
this.context = context;
}
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater inflater = (LayoutInflater) getContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = inflater.inflate(R.layout.fragment_buy_list_item, null);
}
ItemBuy i = objects.get(position);
if (i != null) {
TextView name = (TextView) v.findViewById(R.id.tv_shop_name);
TextView desc = (TextView) v.findViewById(R.id.tv_shop_description);
if (name != null) {
name.setText(i.getName());
}
if (desc != null) {
desc.setText(i.getDesc());
}
}
return v;
}
}
logcat-
10-15 11:37:05.860: W/dalvikvm(973): threadid=1: thread exiting with uncaught exception group=0xb4aebb90)
10-15 11:37:05.890: E/AndroidRuntime(973): FATAL EXCEPTION: main
10-15 11:37:05.890: E/AndroidRuntime(973): Process: com.coach.zudash, PID: 973
10-15 11:37:05.890: E/AndroidRuntime(973): java.lang.RuntimeException: Content has view with id attribute 'android.R.id.list' that is not a ListView class
10-15 11:37:05.890: E/AndroidRuntime(973): at android.app.ListFragment.ensureList(ListFragment.java:402)
10-15 11:37:05.890: E/AndroidRuntime(973): at android.app.ListFragment.onViewCreated(ListFragment.java:203)
10-15 11:37:05.890: E/AndroidRuntime(973): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:904)
10-15 11:37:05.890: E/AndroidRuntime(973): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1062)
10-15 11:37:05.890: E/AndroidRuntime(973): at android.app.BackStackRecord.run(BackStackRecord.java:684)
10-15 11:37:05.890: E/AndroidRuntime(973): at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1447)
10-15 11:37:05.890: E/AndroidRuntime(973): at android.app.FragmentManagerImpl$1.run(FragmentManager.java:443)
10-15 11:37:05.890: E/AndroidRuntime(973): at android.os.Handler.handleCallback(Handler.java:733)
10-15 11:37:05.890: E/AndroidRuntime(973): at android.os.Handler.dispatchMessage(Handler.java:95)
10-15 11:37:05.890: E/AndroidRuntime(973): at android.os.Looper.loop(Looper.java:137)
10-15 11:37:05.890: E/AndroidRuntime(973): at android.app.ActivityThread.main(ActivityThread.java:4998)
10-15 11:37:05.890: E/AndroidRuntime(973): at java.lang.reflect.Method.invokeNative(Native Method)
10-15 11:37:05.890: E/AndroidRuntime(973): at java.lang.reflect.Method.invoke(Method.java:515)
10-15 11:37:05.890: E/AndroidRuntime(973): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777)
10-15 11:37:05.890: E/AndroidRuntime(973): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593)
10-15 11:37:05.890: E/AndroidRuntime(973): at dalvik.system.NativeStart.main(Native Method)
【问题讨论】:
-
请提供崩溃日志?
-
我添加了logcat
-
你能把
FragmentBuy的代码和它的布局贴出来吗?
标签: android list listview android-fragments fragment