2013-03-23 78 views
0

我有从ListFragment onItemClickListener()调用startActivity(intent)的问题。当我从列表视图中点击一个项目时,应用程序崩溃。onItemClickListener()的ListFragment startActivity崩溃应用程序

代码是在这里:

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 



       } 
       } 


} 
+0

什么是logcat的话吗? – 2013-03-23 20:10:38

+0

我不能查看logcat ...自动显示windwos调试和显示Instrumentation.class – user2127793 2013-03-23 20:25:27

回答

1

添加SingleMenuItemActivity到您的清单:)

+0

谢谢:-D。它现在工作 – user2127793 2013-03-24 15:05:34