2013-03-19 53 views
0

我有SherlockListFtagment和XML解析器的问题。在使用AsyncTask的ListActivitiy上没有问题。我需要在ListFragment上进行编辑。Android的ListFragment(sherlock)XML解析url

代码:

public class AndroidFragment extends SherlockListFragment{ 


    static final String URL = "http://..."; 
    // 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; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 

       View view =inflater.inflate(R.layout.activity_main, null); 
     Log.w("Aplikacija_view","Startovana"); 
     return view; 

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

    } 

    public class loadListView extends AsyncTask<Integer, String, String> 
    { 
     @Override protected void onPreExecute() 
     { 

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

     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(); 
      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}; 

      // Instantiating an adapter to store each items 
      // R.layout.listview_layout defines the layout of each item 
      SimpleAdapter adapter = new SimpleAdapter(getActivity().getBaseContext(), menuItems, R.layout.listview_layout, from, to);   

      // Setting the adapter to the listView 
      setListAdapter(adapter); 



       } 
       } 


} 

应用的是百达creshed。我需要编辑什么?

** * ****更新日志* ** * ** * ** * ** *

03-19 23:44:40.203: W/Aplikacija_view(30386): Startovana 
03-19 23:44:40.233: W/Aplikacija_resume(30386): Startovana 
03-19 23:44:40.243: W/asset(30386): deep redirect failure from 0x01030046 => 0x0a07000c, defStyleAttr=0x01010084, defStyleRes=0x0103008f, style=0x00000000 
03-19 23:44:40.243: W/asset(30386): deep redirect failure from 0x01030046 => 0x0a07000c, defStyleAttr=0x01010084, defStyleRes=0x0103008f, style=0x00000000 
03-19 23:44:40.413: D/AndroidRuntime(30386): Shutting down VM 
03-19 23:44:40.413: W/dalvikvm(30386): threadid=1: thread exiting with uncaught exception (group=0x4200fa08) 
03-19 23:44:40.423: E/AndroidRuntime(30386): FATAL EXCEPTION: main 
03-19 23:44:40.423: E/AndroidRuntime(30386): java.lang.RuntimeException: Unable to resume activity {in.wptrafficanalyzer.actionbarsherlocknavtabwithimages/in.wptrafficanalyzer.actionbarsherlocknavtabwithimages.MainActivity}: android.support.v4.app.SuperNotCalledException: Fragment AndroidFragment{42678970 #0 id=0x1020002 android} did not call through to super.onResume() 
03-19 23:44:40.423: E/AndroidRuntime(30386): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2875) 
03-19 23:44:40.423: E/AndroidRuntime(30386): at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2904) 
03-19 23:44:40.423: E/AndroidRuntime(30386): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2367) 
03-19 23:44:40.423: E/AndroidRuntime(30386): at android.app.ActivityThread.access$600(ActivityThread.java:156) 
03-19 23:44:40.423: E/AndroidRuntime(30386): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1250) 
03-19 23:44:40.423: E/AndroidRuntime(30386): at android.os.Handler.dispatchMessage(Handler.java:99) 
03-19 23:44:40.423: E/AndroidRuntime(30386): at android.os.Looper.loop(Looper.java:137) 
03-19 23:44:40.423: E/AndroidRuntime(30386): at android.app.ActivityThread.main(ActivityThread.java:5234) 
03-19 23:44:40.423: E/AndroidRuntime(30386): at java.lang.reflect.Method.invokeNative(Native Method) 
03-19 23:44:40.423: E/AndroidRuntime(30386): at java.lang.reflect.Method.invoke(Method.java:525) 
03-19 23:44:40.423: E/AndroidRuntime(30386): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:799) 
03-19 23:44:40.423: E/AndroidRuntime(30386): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:566) 
03-19 23:44:40.423: E/AndroidRuntime(30386): at dalvik.system.NativeStart.main(Native Method) 
03-19 23:44:40.423: E/AndroidRuntime(30386): Caused by: android.support.v4.app.SuperNotCalledException: Fragment AndroidFragment{42678970 #0 id=0x1020002 android} did not call through to super.onResume() 
03-19 23:44:40.423: E/AndroidRuntime(30386): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:919) 
03-19 23:44:40.423: E/AndroidRuntime(30386): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1080) 
03-19 23:44:40.423: E/AndroidRuntime(30386): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1062) 
03-19 23:44:40.423: E/AndroidRuntime(30386): at android.support.v4.app.FragmentManagerImpl.dispatchResume(FragmentManager.java:1820) 
03-19 23:44:40.423: E/AndroidRuntime(30386): at android.support.v4.app.FragmentActivity.onPostResume(FragmentActivity.java:412) 
03-19 23:44:40.423: E/AndroidRuntime(30386): at com.actionbarsherlock.app.SherlockFragmentActivity.onPostResume(SherlockFragmentActivity.java:69) 
03-19 23:44:40.423: E/AndroidRuntime(30386): at android.app.Activity.performResume(Activity.java:5230) 
03-19 23:44:40.423: E/AndroidRuntime(30386): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2865) 
03-19 23:44:40.423: E/AndroidRuntime(30386): ... 12 more 
+0

你能请张贴的崩溃日志? – SaKet 2013-03-19 22:32:31

+0

是的......我发布日志。 – user2127793 2013-03-19 22:50:35

回答

0

你忘了super.onResume()电话,似乎:

... 
    ... 

    @Override 
    public void onResume() { 
     super.onResume(); // don't forget to call super.onResume() 
     Log.w("Aplikacija_resume","Startovana"); 
     new loadListView().execute(); 

    } 

    ... 
    ... 
+0

这是一个Logcat [03-20 00:12:10.913:I /编舞师(3863):跳过了38帧!该应用程序可能在其主线程上做了太多工作。] 何时启动应用程序,显示listfragment和 它们显示进度并没有做。 – user2127793 2013-03-19 23:39:48