onItemClickListener()中的ListFragment startActivity崩溃应用程序

时间:2013-03-23 20:06:14

标签: android android-listview android-listfragment

我在ListFragment上从onItemClickListener()调用startActivity(intent)时遇到问题。当我从listview中单击某个项目时,应用程序崩溃。

代码在这里:

public class AndroidFragment extends SherlockListFragment{

    static{
        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
        StrictMode.setThreadPolicy(policy);
    }
    static final String URL = "***";
    // XML node keys
    static final String KEY_ITEM = "novost"; // parent node
    //static final String KEY_ID = "id";
    static final String KEY_NAME = "naslov";
    static final String KEY_COST = "datum";
    static final String KEY_DESC = "text";
    static final String KEY_LINK = "link";
    static final String KEY_LINK1 = "doc";
    ArrayList<HashMap<String, String>> menuItems;
    String[] from = { KEY_NAME, KEY_DESC, KEY_COST,KEY_LINK,KEY_LINK1};

    /** Ids of views in listview_layout */
    int[] to = { R.id.naslov, R.id.novost, R.id.datum,R.id.link,R.id.link1};
    ListView list;

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
      super.onActivityCreated(savedInstanceState);
      new loadListView().execute();
      ListView lv = getListView();

        lv.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                // getting values from selected ListItem
                String name = ((TextView) view.findViewById(R.id.naslov)).getText().toString();
                String cost = ((TextView) view.findViewById(R.id.datum)).getText().toString();

                String description = ((TextView) view.findViewById(R.id.novost)).getText().toString();
                String link = ((TextView) view.findViewById(R.id.link)).getText().toString();
                String link1 = ((TextView) view.findViewById(R.id.link1)).getText().toString();
                //String link_asd=link;


                // Starting new intent
                Intent in = new Intent(getActivity().getBaseContext(), SingleMenuItemActivity.class);
                in.putExtra(KEY_NAME, name);
                in.putExtra(KEY_COST, cost);
                in.putExtra(KEY_DESC, description);
                if(link==null)
                {
                    link=null;
                }else{
                in.putExtra(KEY_LINK, link);
                in.putExtra(KEY_LINK1, link1);
                }
                //in.putExtra("link1", link_asd);
                startActivity(in);

            }
        });


    }
    /*@Override
    public void onListItemClick(ListView list, View v, int position, long id) {
        /**
         * Toast message will be shown when you click any list element

        //Toast.makeText(getActivity(), getListView().getItemAtPosition(position).toString(), Toast.LENGTH_LONG).show();
        String name = ((TextView) v.findViewById(R.id.naslov)).getText().toString();
        String cost = ((TextView) v.findViewById(R.id.datum)).getText().toString();

        String description = ((TextView) v.findViewById(R.id.novost)).getText().toString();
        String link = ((TextView) v.findViewById(R.id.link)).getText().toString();
        String link1 = ((TextView) v.findViewById(R.id.link1)).getText().toString();
        //String link_asd=link;


        // Starting new intent
        Intent in = new Intent(getActivity(), SingleMenuItemActivity.class);
        in.putExtra(KEY_NAME, name);
        in.putExtra(KEY_COST, cost);
        in.putExtra(KEY_DESC, description);
        if(link==null)
        {

        }else{
        in.putExtra(KEY_LINK, link);
        in.putExtra(KEY_LINK1, link1);
        }
        //in.putExtra("link1", link_asd);
        startActivity(in);
        Log.e("error",name);
        super.onListItemClick(list, v, position, id);
    }*/

    @Override
    public void onResume() {
        super.onResume();
        //Log.w("Aplikacija_resume","Startovana" );
        //new loadListView().execute();


    }

    public class loadListView extends AsyncTask<Integer, String, String> 
    {   
        private final ProgressDialog dialog = new ProgressDialog(getActivity());
        @Override protected void onPreExecute() 
        { 

            //Toast.makeText(getActivity(), "Ucitavanje...", Toast.LENGTH_LONG).show();
            //

            this.dialog.setMessage("Molimo da sačekate ...");
        super.onPreExecute();
        } 
        @Override protected String doInBackground(Integer... args) 
        { // updating UI from Background Thread 
        menuItems = new ArrayList<HashMap<String, String>>();
            final XMLParser parser = new XMLParser();
            String xml = parser.getXmlFromUrl(URL); // getting XML
            Document doc = parser.getDomElement(xml); // getting DOM element

            NodeList nl = doc.getElementsByTagName(KEY_ITEM);
            // looping through all item nodes <item>
            for (int i = 0; i < nl.getLength(); i++) {
                // creating new HashMap
                HashMap<String, String> map = new HashMap<String, String>();
                Element e = (Element) nl.item(i);
                // adding each child node to HashMap key => value

                map.put(KEY_NAME, parser.getValue(e, KEY_NAME));
                map.put(KEY_COST, "Datum: " + parser.getValue(e, KEY_COST));
                map.put(KEY_DESC, parser.getValue(e, KEY_DESC));
                map.put(KEY_LINK, parser.getValue(e, KEY_LINK));
                map.put(KEY_LINK1, parser.getValue(e, KEY_LINK1));

                // adding HashList to ArrayList
                menuItems.add(map);

            }



        return null; 
        } 
        @Override
        protected void onPostExecute(String args)
        { 
            //Toast.makeText(getActivity(), "Ucitano", Toast.LENGTH_LONG).show();

            SimpleAdapter adapter = new SimpleAdapter(getActivity().getBaseContext(), menuItems, R.layout.list_row, from, to);
            setListAdapter(adapter);
            if (this.dialog.isShowing()) {
                  this.dialog.dismiss();
                  }


            // Instantiating an adapter to store each items
            // R.layout.listview_layout defines the layout of each item



                } 
                }


}

1 个答案:

答案 0 :(得分:1)

SingleMenuItemActivity添加到您的清单:)