Android ListFragment显示数据时出现问题

Android ListFragment显示数据时出现问题,android,android-fragments,android-listfragment,Android,Android Fragments,Android Listfragment,我有一个类,它使用ListFragment显示所有者列表。当用户单击车主时,它应该用一个新的片段替换底部片段,该片段将列出车主的汽车。问题是它一直抛出一个异常找不到id为0x7f090013的视图,即使我为它创建了一个视图。我做错了什么 //这是onListItemClick,我正在调用它来替换另一个片段(完整的代码将在末尾发布) //这是汽车的细节片段 import android.os.AsyncTask; import android.os.Bundle; import android.s

我有一个类,它使用ListFragment显示所有者列表。当用户单击车主时,它应该用一个新的片段替换底部片段,该片段将列出车主的汽车。问题是它一直抛出一个异常找不到id为0x7f090013的视图,即使我为它创建了一个视图。我做错了什么

//这是
onListItemClick
,我正在调用它来替换另一个片段(完整的代码将在末尾发布)

//这是汽车的细节片段

import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v4.app.ListFragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class CarDetail extends ListFragment {
   private ListView lCars;
   private ArrayList<Car> listCar = new ArrayList<Car>();
   private CarAdapter carAdapter;
    private int carId = 0;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View v1 = inflater.inflate(R.layout.customize_layout,container,false);
        lCars = (ListView) v1.findViewById(android.R.id.list);
        return v1;
    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        lCars.setAdapter(carAdapter);
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        carAdapter = new CarAdapter(getActivity(), R.layout.car_detail, listCar);
        if(carId > 0)
        {
           new CarAsyncTask(carId).execute();
                     //As soon as it done with the on create, it throw the exception. 
        }
    }

    public void SearchParameters(int id) {
        carId = id;
    }




    private class CarAsyncTask extends AsyncTask<Integer, Void, List<Car>> {
        public int id =0;


        public CarAsyncTask(int carId) {
            id = carId;
        }

        @Override
        protected List<Car> doInBackground(Integer... params) {
            //List<Car> item = null;
            List<Car> item = new ArrayList<Car>();
            item.add(new Car("Chevy","Caprice","2002", 1));
            item.add(new Car("Chevy","Malibu","2014", 2));
            item.add(new Car("Dodge","Stratus","2002", 3));
            item.add(new Car("Saturn","L300","2004", 4));

            return item;
        }



        @Override
        protected void onPreExecute() {
            // TODO Auto-generated method stub
            super.onPreExecute();
            listCar.clear();
            carAdapter.clear();

        }

        @Override
        protected void onPostExecute(List<Car> result) {
            super.onPostExecute(result);
            for(Car c: result)
            {
                if(c.getID() == carId)
                {
                    carAdapter.add(c);
                    carAdapter.notifyDataSetChanged();
                }
            }
        }

    }

}
导入android.os.AsyncTask;
导入android.os.Bundle;
导入android.support.v4.app.ListFragment;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.ArrayAdapter;
导入android.widget.ListView;
公共类CarDetail扩展了ListFragment{
私有列表视图LCAR;
private ArrayList listCar=new ArrayList();
私人卡拉达普特卡拉达普特;
私有int carId=0;
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
视图v1=充气机。充气(右布局。自定义布局,容器,错误);
lCars=(ListView)v1.findviewbyd(android.R.id.list);
返回v1;
}
@凌驾
已创建ActivityState上的公共无效(Bundle savedInstanceState){
super.onActivityCreated(savedInstanceState);
lCars.setAdapter(carAdapter);
}
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
carAdapter=新的carAdapter(getActivity(),R.layout.car\u detail,listCar);
如果(carId>0)
{
新建CarAsyncTask(carId.execute();
//一旦完成on create,它就会抛出异常。
}
}
公共无效搜索参数(int id){
carId=id;
}
私有类CarAsyncTask扩展了AsyncTask{
公共int id=0;
公共CarAsyncTask(int carId){
id=carId;
}
@凌驾
受保护列表doInBackground(整数…参数){
//列表项=空;
列表项=新建ArrayList();
添加项目(新车(“雪佛兰”、“卡普里斯”、“2002”,1));
添加项目(新车(“雪佛兰”、“马里布”、“2014”、2));
添加项目(新车(“道奇”、“Stratus”、“2002”和“3”);
添加项目(新车(“土星”、“L300”、“2004”、4));
退货项目;
}
@凌驾
受保护的void onPreExecute(){
//TODO自动生成的方法存根
super.onPreExecute();
listCar.clear();
carAdapter.clear();
}
@凌驾
受保护的void onPostExecute(列表结果){
super.onPostExecute(结果);
对于(c车:结果)
{
if(c.getID()==carId)
{
加上(c);
carAdapter.notifyDataSetChanged();
}
}
}
}
}
//car_detail.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

   <TextView
        android:id="@+id/tvMake"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="test" />

    <TextView
        android:id="@+id/tvModel"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="make" />

    <TextView
        android:id="@+id/tvYear"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="year" />

     <TextView
        android:id="@+id/tvID"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="ID" />

</LinearLayout>
//the customize layout

<?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
         android:orientation="vertical"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:paddingLeft="8dp"
         android:paddingRight="8dp">

     <ListView android:id="@id/android:list"
               android:layout_width="match_parent"
               android:layout_height="match_parent"
               android:layout_weight="1"
               android:background="#FFFF00"
               android:drawSelectorOnTop="false"/>

     <TextView android:id="@id/android:empty"
               android:layout_width="match_parent"
               android:layout_height="match_parent"
               android:background="#FF00FF"
               android:text="No data"/>
 </LinearLayout>
Exception:

08-22 21:00:21.051: E/AndroidRuntime(907): FATAL EXCEPTION: main
08-22 21:00:21.051: E/AndroidRuntime(907): java.lang.IllegalArgumentException: No view found for id 0x7f090013 (com.mb.carlovers:id/fCarDetail) for fragment CarDetail{40d97200 #0 id=0x7f090013}
08-22 21:00:21.051: E/AndroidRuntime(907):  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:919)
08-22 21:00:21.051: E/AndroidRuntime(907):  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104)
08-22 21:00:21.051: E/AndroidRuntime(907):  at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
08-22 21:00:21.051: E/AndroidRuntime(907):  at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1460)
08-22 21:00:21.051: E/AndroidRuntime(907):  at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:440)
08-22 21:00:21.051: E/AndroidRuntime(907):  at android.os.Handler.handleCallback(Handler.java:725)
08-22 21:00:21.051: E/AndroidRuntime(907):  at android.os.Handler.dispatchMessage(Handler.java:92)
08-22 21:00:21.051: E/AndroidRuntime(907):  at android.os.Looper.loop(Looper.java:137)
08-22 21:00:21.051: E/AndroidRuntime(907):  at android.app.ActivityThread.main(ActivityThread.java:5041)
08-22 21:00:21.051: E/AndroidRuntime(907):  at java.lang.reflect.Method.invokeNative(Native Method)
08-22 21:00:21.051: E/AndroidRuntime(907):  at java.lang.reflect.Method.invoke(Method.java:511)
08-22 21:00:21.051: E/AndroidRuntime(907):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
08-22 21:00:21.051: E/AndroidRuntime(907):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
08-22 21:00:21.051: E/AndroidRuntime(907):  at dalvik.system.NativeStart.main(Native Method)
08-22 21:00:21.172: W/ActivityManager(290):   Force finishing activity com.mb.carlovers/.People
08-22 21:00:21.231: W/WindowManager(290): Failure taking screenshot for (237x148) to layer 21015
08-22 21:00:21.631: E/SurfaceFlinger(37): ro.sf.lcd_density must be defined as a build property
08-22 21:00:21.751: W/ActivityManager(290): Activity pause timeout for ActivityRecord{40f05be8 u0 com.mb.carlovers/.People}
08-22 21:00:21.821: D/dalvikvm(290): GC_CONCURRENT freed 752K, 18% free 5916K/7192K, paused 74ms+104ms, total 515ms
08-22 21:00:31.265: W/ActivityManager(290): Launch timeout has expired, giving up

//自定义布局
例外情况:
08-22 21:00:21.051:E/AndroidRuntime(907):致命异常:主
08-22 21:00:21.051:E/AndroidRuntime(907):java.lang.IllegalArgumentException:未找到片段CarDetail{40d97200#0 id=0x7f090013}的id 0x7f090013(com.mb.carlovers:id/fCarDetail)的视图
08-22 21:00:21.051:E/AndroidRuntime(907):在android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:919)
08-22 21:00:21.051:E/AndroidRuntime(907):在android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104)
08-22 21:00:21.051:E/AndroidRuntime(907):在android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
08-22 21:00:21.051:E/AndroidRuntime(907):在android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1460)
08-22 21:00:21.051:E/AndroidRuntime(907):在android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:440)
08-22 21:00:21.051:E/AndroidRuntime(907):在android.os.Handler.handleCallback(Handler.java:725)上
08-22 21:00:21.051:E/AndroidRuntime(907):在android.os.Handler.dispatchMessage(Handler.java:92)上
08-22 21:00:21.051:E/AndroidRuntime(907):在android.os.Looper.loop(Looper.java:137)
08-22 21:00:21.051:E/AndroidRuntime(907):位于android.app.ActivityThread.main(ActivityThread.java:5041)
08-22 21:00:21.051:E/AndroidRuntime(907):位于java.lang.reflect.Method.Invokenactive(本机方法)
08-22 21:00:21.051:E/AndroidRuntime(907):位于java.lang.reflect.Method.invoke(Method.java:511)
08-22 21:00:21.051:E/AndroidRuntime(907):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
08-22 21:00:21.051:E/AndroidRuntime(907):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
08-22 21:00:21.051:E/AndroidRuntime(907):在dalvik.system.NativeStart.main(本机方法)
08-22 21:00:21.172:W/ActivityManager(290):强制完成活动com.mb.carlovers/.People
08-22 21:00:21.231:W/WindowManager(290):为层21015(237x148)拍摄故障截图
08-22 21:00:21.631:E/SurfaceFlinger(37):ro.sf.lcd_密度必须定义为构建属性
08-22 21:00:21.751:W/ActivityManager(290):ActivityRecord{40f05be8 u0 com.mb.carlovers/.People}的活动暂停超时
08-22 21:00:21.821:D/dalvikvm(290):GC_并发释放752K,18%释放5916K/7192K,暂停74ms+104ms,总计515ms
08-22 21:00:31.265:W/ActivityManager(290):启动超时已过期,放弃
//下面是所有者的详细代码

package com.mb.carlovers;
import java.util.ArrayList;
import java.util.List;

import com.mb.carlovers.adapter.OwnerAdapter;

import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.app.ListFragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;

public class OwnerDetail extends ListFragment {
   private ListView mListView;
   private ArrayList<Owner> listItem = new ArrayList<Owner>();
   private OwnerAdapter ownerAdapter;
   private String[] searchParameter = null;

   public void SearchParameters(String[] parameters)
   {
       searchParameter = parameters;
   }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
        View v1 = inflater.inflate(R.layout.customize_layout,container, false);
        mListView = (ListView) v1.findViewById(android.R.id.list);
        return v1;
    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState) 
    {
        super.onActivityCreated(savedInstanceState);
        mListView.setAdapter(ownerAdapter);
      //  ownerAdapter.notifyDataSetChanged();
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ownerAdapter = new OwnerAdapter(getActivity(), R.layout.owner_detail, listItem);
        if(!(searchParameter == null))
        {
            //ownerAdapter.clear();
        //  ownerAdapter.addAll(listItem);
            new OnwerAsyncTask().execute();
            //ownerAdapter.notifyDataSetChanged();
        }
    }

    @Override
    public void onListItemClick(ListView l, View v, int position, long id) {
        // TODO Auto-generated method stub
        //super.onListItemClick(l, v, position, id);
        int search = 0;
        Owner a = (Owner) getListView().getItemAtPosition(position);
        String name = a.getFirstName();
        String lName = a.getLastName();
        String Id = a.getCarId();

        FragmentManager mFragment = getChildFragmentManager();
        FragmentTransaction ft = mFragment.beginTransaction();
        CarDetail cDetail = new CarDetail();
        cDetail.SearchParameters(Integer.parseInt(Id));
        ft.replace(R.id.fCarDetail, cDetail);
        ft.addToBackStack(null);
        ft.commit();    
    }


    private class OnwerAsyncTask extends AsyncTask<Void, Void, List<Owner>> {
        @Override
        protected List<Owner> doInBackground(Void... params) {
            ArrayList<Owner> listItemLocal = new ArrayList<Owner>();
            try
            {
                Owner items = new Owner();
                items.setFirstName("John");
                items.setLastName("Smith");
                items.setCarId("1");
                listItemLocal.add(items);

                Owner item1 = new Owner();
                item1.setFirstName("Samantha");
                item1.setLastName("Right");
                item1.setCarId("2");
                listItemLocal.add(item1);

                Owner item2 = new Owner();
                item2.setFirstName("Regie");
                item2.setLastName("Miller");
                item2.setCarId("3");
                listItemLocal.add(item2);

                Owner item3 = new Owner();
                item3.setFirstName("Mark");
                item3.setLastName("Adam");
                item3.setCarId("4");
                listItemLocal.add(item3);


            } catch(Exception ex)
            {
                ex.toString();
            }
            return listItemLocal;
        }



        @Override
        protected void onPreExecute() {
            listItem.clear();
            ownerAdapter.clear();
            super.onPreExecute();
        }



        @Override
        protected void onPostExecute(List<Owner> result) {
            /*OwnerDetail  fragment = (OwnerDetail) mActivity.getSupportFragmentManager().findFragmentById(R.id.fOwnerDetail);
            fragment.SetAdapter(result);*/
            listItem = (ArrayList<Owner>) result;
            super.onPostExecute(result);
            if(listItem.size() > 0)
            {
                ownerAdapter.clear();
                ownerAdapter.addAll(listItem);
                ownerAdapter.notifyDataSetChanged();
                Log.i("Testing", "Added " + result.size() + "items to adapter.");
            }
        }

    }
}
package com.mb.carlovers;
导入java.util.ArrayList;
导入java.util.List;
导入com.mb.carlovers.adapter.OwnerAdapter;
导入android.os.AsyncTask;
导入android.os.Bundle;
导入android.support.v4.app.FragmentManager;
导入android.support.v4.app.FragmentTransaction;
导入android.support.v4.app.ListFragment;
导入android.util.Lo
package com.mb.carlovers;
import java.util.ArrayList;
import java.util.List;

import com.mb.carlovers.adapter.OwnerAdapter;

import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.app.ListFragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;

public class OwnerDetail extends ListFragment {
   private ListView mListView;
   private ArrayList<Owner> listItem = new ArrayList<Owner>();
   private OwnerAdapter ownerAdapter;
   private String[] searchParameter = null;

   public void SearchParameters(String[] parameters)
   {
       searchParameter = parameters;
   }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
        View v1 = inflater.inflate(R.layout.customize_layout,container, false);
        mListView = (ListView) v1.findViewById(android.R.id.list);
        return v1;
    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState) 
    {
        super.onActivityCreated(savedInstanceState);
        mListView.setAdapter(ownerAdapter);
      //  ownerAdapter.notifyDataSetChanged();
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ownerAdapter = new OwnerAdapter(getActivity(), R.layout.owner_detail, listItem);
        if(!(searchParameter == null))
        {
            //ownerAdapter.clear();
        //  ownerAdapter.addAll(listItem);
            new OnwerAsyncTask().execute();
            //ownerAdapter.notifyDataSetChanged();
        }
    }

    @Override
    public void onListItemClick(ListView l, View v, int position, long id) {
        // TODO Auto-generated method stub
        //super.onListItemClick(l, v, position, id);
        int search = 0;
        Owner a = (Owner) getListView().getItemAtPosition(position);
        String name = a.getFirstName();
        String lName = a.getLastName();
        String Id = a.getCarId();

        FragmentManager mFragment = getChildFragmentManager();
        FragmentTransaction ft = mFragment.beginTransaction();
        CarDetail cDetail = new CarDetail();
        cDetail.SearchParameters(Integer.parseInt(Id));
        ft.replace(R.id.fCarDetail, cDetail);
        ft.addToBackStack(null);
        ft.commit();    
    }


    private class OnwerAsyncTask extends AsyncTask<Void, Void, List<Owner>> {
        @Override
        protected List<Owner> doInBackground(Void... params) {
            ArrayList<Owner> listItemLocal = new ArrayList<Owner>();
            try
            {
                Owner items = new Owner();
                items.setFirstName("John");
                items.setLastName("Smith");
                items.setCarId("1");
                listItemLocal.add(items);

                Owner item1 = new Owner();
                item1.setFirstName("Samantha");
                item1.setLastName("Right");
                item1.setCarId("2");
                listItemLocal.add(item1);

                Owner item2 = new Owner();
                item2.setFirstName("Regie");
                item2.setLastName("Miller");
                item2.setCarId("3");
                listItemLocal.add(item2);

                Owner item3 = new Owner();
                item3.setFirstName("Mark");
                item3.setLastName("Adam");
                item3.setCarId("4");
                listItemLocal.add(item3);


            } catch(Exception ex)
            {
                ex.toString();
            }
            return listItemLocal;
        }



        @Override
        protected void onPreExecute() {
            listItem.clear();
            ownerAdapter.clear();
            super.onPreExecute();
        }



        @Override
        protected void onPostExecute(List<Owner> result) {
            /*OwnerDetail  fragment = (OwnerDetail) mActivity.getSupportFragmentManager().findFragmentById(R.id.fOwnerDetail);
            fragment.SetAdapter(result);*/
            listItem = (ArrayList<Owner>) result;
            super.onPostExecute(result);
            if(listItem.size() > 0)
            {
                ownerAdapter.clear();
                ownerAdapter.addAll(listItem);
                ownerAdapter.notifyDataSetChanged();
                Log.i("Testing", "Added " + result.size() + "items to adapter.");
            }
        }

    }
}
//the piece of code below was causing the issue.
holder.tvId.setText(item.getID());