从网址解析的Android ListFragment(sherlock)xml(Android ListFragment (sherlock) xml parsing from url)

编程入门 行业动态 更新时间:2024-10-20 07:53:53
网址解析的Android ListFragment(sherlock)xml(Android ListFragment (sherlock) xml parsing from url)

我有SherlockListFtagment和xml解析器的问题。 在ListActivitiy上使用AsyncTask并没有问题。 我需要编辑什么来处理ListFragment。

码:

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

应用程序总是很新鲜。 我需要编辑什么?

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

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

I have problem with SherlockListFtagment and xml parser. On ListActivitiy working with AsyncTask and no have problem. What I need edit for working on ListFragment.

Code:

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

Application is allways is creshed. What i need to edit ?

*******Update log*************

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

最满意答案

你忘了super.onResume()调用,似乎:

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

You forgot super.onResume() call, it seems:

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

更多推荐

本文发布于:2023-07-23 02:34:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1226508.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:网址   ListFragment   Android   sherlock   parsing

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!