Fragment中关于Simpleadapter的 无指针问题 nullpoint 以及runnable问题

来源:互联网 发布:数控车床电脑编程软件 编辑:程序博客网 时间:2024/06/05 00:31
package com.example.fragceshi;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import android.app.Fragment;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.webkit.WebView.FindListener;import android.widget.ListView;import android.widget.SimpleAdapter;public class Frag01 extends Fragment {//private List<String> list=null;private ListView lv=null;private ListView lv2=null;private View lview=null;List<HashMap<String, String>> list=new ArrayList<HashMap<String, String>>();private SimpleAdapter simpleAdapter;    @Override    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {            System.out.println("-------------------------onCreateView---------------");        return inflater.inflate(R.layout.activity_frag01, container, false);    }    @Override    public void onActivityCreated(Bundle savedInstanceState) {        System.out.println("------onActivityCreated----------->");         super.onActivityCreated(savedInstanceState);        lv=(ListView)this.getView().findViewById(R.id.listView1);        lv2=(ListView)this.getActivity().findViewById(R.id.listView1);        System.out.println("------onActivityCreated----------->"+lv);         System.out.println("------onActivityCreated----------->"+lv2);         Thread thread = new Thread(myrunnable);        thread.start();        try {            thread.join();        } catch (InterruptedException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        /*HashMap<String, String> map = new HashMap<String, String>();        map.put("dir_name"," 12121");        list.add(map);         System.out.println("-------simpleAdapter--start----------->");        simpleAdapter=new SimpleAdapter(getActivity(),list,R.layout.dir_item,new String[]{"dir_name"},new int[]{R.id.dir_name});        System.out.println("---------0.0------------------->"+simpleAdapter);        lv.setAdapter(simpleAdapter);        System.out.println("-------runnable--end----------->");        System.out.println(list);        System.out.println("-------runnable--end----------->");*/    }    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        System.out.println("onCreate------------------------>");}Runnable myrunnable=new   Runnable(){    public  void run(){            System.out.println("-------runnable--start----------->");            HashMap<String, String> map = new HashMap<String, String>();            map.put("dir_name"," 12121");            list.add(map);             System.out.println("-------simpleAdapter--start----------->");            simpleAdapter=new SimpleAdapter(getActivity(),list,R.layout.dir_item,new String[]{"dir_name"},new int[]{R.id.dir_name});            System.out.println("---------0.0------------------->"+simpleAdapter);            lv.setAdapter(simpleAdapter);            System.out.println("-------runnable--end----------->");            System.out.println(list);            System.out.println("-------runnable--end----------->");        }};}

上面是一个fragment,我在onactivitycreate方法中加入了thread.join();,让整个线程读完 再运行主线程,不然就会出现nullpoint的问题,我这个新手考虑了一天才想到一般主线程运行较快,子线程还没完事adapter没完事 fragment打开出错,app会强行退出。



如果我说的哪里不对请高手赐教!谢谢,我还没搞明白getview()和getactivity的区别,比如View view=(ListView)getView.findViewById(R.id.content_name);
View view=(ListView)getactivity.findViewById(R.id.content_name);
求大神赐教



0 0