i followed this tutorial in order create rss reader (unfortunately, in spanish). however, rss must inside fragment converted mainactivity fragment:
import android.content.context; import android.content.intent; import android.database.cursor; import android.net.connectivitymanager; import android.net.networkinfo; import android.os.asynctask; import android.os.bundle; import android.support.v4.app.fragment; import android.support.v4.widget.simplecursoradapter; import android.util.log; import android.view.layoutinflater; import android.view.view; import android.view.viewgroup; import android.widget.adapterview; import android.widget.listview; import com.android.volley.response; import com.android.volley.volleyerror; import com.my.app.mainactivity_tabs; import com.my.app.modelo.feeddatabase; import com.my.app.modelo.scriptdatabase; import com.my.app.r; import com.my.app.rssparse.rss; import com.my.app.web.volleysingleton; import com.my.app.web.xmlrequest; /** * creado por hermosa programación * * actividad principal que representa el home de la aplicación */ public class news extends fragment { private static final string tag = mainactivity_tabs.class.getsimplename(); public static final string url_feed = "www.forbes.com/fdc/rss.html"; private listview listview; private feedadapter adapter; @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { view rootview = inflater.inflate(r.layout.activity_tab2, container, false); // obtener la lista listview = (listview) getactivity().findviewbyid(r.id.lista); connectivitymanager connmgr = (connectivitymanager) getactivity().getsystemservice(context.connectivity_service); networkinfo networkinfo = connmgr.getactivenetworkinfo(); if (networkinfo != null && networkinfo.isconnected()) { volleysingleton.getinstance(getactivity()).addtorequestqueue( new xmlrequest<>( url_feed, rss.class, null, new response.listener<rss>() { @override public void onresponse(rss response) { // caching feeddatabase.getinstance(getactivity()). sincronizarentradas(response.getchannel().getitems()); // carga inicial de datos... new loaddata().execute(); } }, new response.errorlistener() { @override public void onerrorresponse(volleyerror error) { log.d(tag, "error volley: " + error.getmessage()); } } ) ); } else { log.i(tag, "la conexión internet no está disponible"); adapter = new feedadapter( getactivity(), feeddatabase.getinstance(getactivity()).obtenerentradas(), simplecursoradapter.flag_register_content_observer); listview.setadapter(adapter); } // regisgrar escucha de la lista listview.setonitemclicklistener(new adapterview.onitemclicklistener() { @override public void onitemclick(adapterview<?> parent, view view, int position, long id) { cursor c = (cursor) adapter.getitem(position); // obtene url de la entrada seleccionada string url = c.getstring(c.getcolumnindex(scriptdatabase.columnentradas.url)); // nuevo intent explícito intent = new intent(getactivity(), detailactivity.class); // setear url i.putextra("url-extra", url); // iniciar actividad startactivity(i); } }); return rootview; } public class loaddata extends asynctask<void, void, cursor> { @override protected cursor doinbackground(void... params) { // carga inicial de registros return feeddatabase.getinstance(getactivity()).obtenerentradas(); } @override protected void onpostexecute(cursor cursor) { super.onpostexecute(cursor); // crear el adaptador adapter = new feedadapter( getactivity(), cursor, simplecursoradapter.flag_register_content_observer); // relacionar la lista con el adaptador listview.setadapter(adapter); } } } but when run app, following error , cannot figure out why happens, ideas?
java.lang.runtimeexception: unable instantiate activity componentinfo{com.my.app/com.my.app.ui.news}: java.lang.classcastexception: com.my.app.ui.news cannot cast android.app.activity @ android.app.activitythread.performlaunchactivity(activitythread.java:2195) @ android.app.activitythread.handlelaunchactivity(activitythread.java:2319) @ android.app.activitythread.access$1100(activitythread.java:135) @ android.app.activitythread$h.handlemessage(activitythread.java:1232) @ android.os.handler.dispatchmessage(handler.java:102) @ android.os.looper.loop(looper.java:136) @ android.app.activitythread.main(activitythread.java:5253) @ java.lang.reflect.method.invokenative(native method) @ java.lang.reflect.method.invoke(method.java:515) @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:939) @ com.android.internal.os.zygoteinit.main(zygoteinit.java:755) @ dalvik.system.nativestart.main(native method) caused by: java.lang.classcastexception: com.my.app.ui.news cannot cast android.app.activity @ android.app.instrumentation.newactivity(instrumentation.java:1064) @ android.app.activitythread.performlaunchactivity(activitythread.java:2186) at android.app.activitythread.handlelaunchactivity(activitythread.java:2319) at android.app.activitythread.access$1100(activitythread.java:135) at android.app.activitythread$h.handlemessage(activitythread.java:1232) at android.os.handler.dispatchmessage(handler.java:102) at android.os.looper.loop(looper.java:136) at android.app.activitythread.main(activitythread.java:5253) at java.lang.reflect.method.invokenative(native method) at java.lang.reflect.method.invoke(method.java:515) at com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:939) at com.android.internal.os.zygoteinit.main(zygoteinit.java:755) at dalvik.system.nativestart.main(native method)
your intent starting news activity trying start news fragment (probably because manifest has news default launcher activity). fragment needs held inside activity instead.
see tutorial here on how add fragment activity.
Comments
Post a Comment