获得'';不幸的是,RSS应用程序已停止'';,显示的logcat'';致命异常:Asnyc任务2''; 07-05 23:41:57.638:E/AndroidRuntime(23992):致命异常:AsyncTask#2 07-05 23:41:57.638:E/AndroidRuntime(23992):java.lang.RuntimeException:执行doInBackground()时出错 07-05 23:41:57.638:E/AndroidRuntime(23992):在android.os.AsyncTask$3.done(AsyncTask.java:299) 07-05 23:41:57.638:E/AndroidRuntime(23992):位于java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273) 07-05 23:41:57.638:E/AndroidRuntime(23992):位于java.util.concurrent.FutureTask.setException(FutureTask.java:124) 07-05 23:41:57.638:E/AndroidRuntime(23992):在java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307) 07-05 23:41:57.638:E/AndroidRuntime(23992):在java.util.concurrent.FutureTask.run(FutureTask.java:137) 07-05 23:41:57.638:E/AndroidRuntime(23992):在android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) 07-05 23:41:57.638:E/AndroidRuntime(23992):位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) 07-05 23:41:57.638:E/AndroidRuntime(23992):位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) 07-05 23:41:57.638:E/AndroidRuntime(23992):在java.lang.Thread.run(Thread.java:856)处 07-05 23:41:57.638:E/AndroidRuntime(23992):原因:java.lang.NoClassDefFoundError:org.jsoup.jsoup 07-05 23:41:57.638:E/AndroidRuntime(23992):位于com.android.rssreaderapplication.RSSParser.getRSSLinkFromURL(RSSParser.java:157) 07-05 23:41:57.638:E/AndroidRuntime(23992):位于com.android.rssreaderapplication.RSSParser.getRSSFeed(RSSParser.java:57) 07-05 23:41:57.638:E/AndroidRuntime(23992):在com.android.rssreaderapplication.AddNewSiteActivity$loadRSSFeed.doInBackground(AddNewSiteActivity.java:98) 07-05 23:41:57.638:E/AndroidRuntime(23992):在com.android.rssreaderapplication.AddNewSiteActivity$loadRSSFeed.doInBackground(AddNewSiteActivity.java:1) 07-05 23:41:57.638:E/AndroidRuntime(23992):在android.os.AsyncTask$2.call(AsyncTask.java:287) 07-05 23:41:57.638:E/AndroidRuntime(23992):在java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 07-05 23:41:57.638:E/AndroidRuntime(23992):。。。还有5个 07-05 23:41:58.468:E/WindowManager(23992):Activity com.android.rssreaderapplication.addnewsite活动泄漏了window com.android.internal.policy.impl.PhoneWindow$DecorView@41d9e000原来是加在这里的 07-05 23:41:58.468:E/WindowManager(23992):android.view.WindowLeaked:Activity com.android.rssreaderapplication.addnewsite活动已泄漏window com.android.internal.policy.impl.PhoneWindow$DecorView@41d9e000原来是加在这里的 07-05 23:41:58.468:E/WindowManager(23992):在android.view.ViewRootImpl。(ViewRootImpl.java:380) 07-05 23:41:58.468:E/WindowManager(23992):在android.view.WindowManagerImpl.addView(WindowManagerImpl.java:292) 07-05 23:41:58.468:E/WindowManager(23992):在android.view.WindowManagerImpl.addView(WindowManagerImpl.java:224) 07-05 23:41:58.468:E/WindowManager(23992):在android.view.WindowManagerImpl$CompatModeWrapper.addView(WindowManagerImpl.java:149) 07-05 23:41:58.468:E/WindowManager(23992):在android.view.Window$LocalWindowManager.addView(Window.java:547) 07-05 23:41:58.468:E/WindowManager(23992):在android.app.Dialog.show(Dialog.java:277) 07-05 23:41:58.468:E/WindowManager(23992):位于com.android.rssreaderapplication.AddNewSiteActivity$loadRSSFeed.onPreExecute(AddNewSiteActivity.java:89) 07-05 23:41:58.468:E/WindowManager(23992):位于android.os.AsyncTask.executeOnExecutor(AsyncTask.java:586) 07-05 23:41:58.468:E/WindowManager(23992):在android.os.AsyncTask.execute(AsyncTask.java:534) 07-05 23:41:58.468:E/WindowManager(23992):位于com.android.rssreaderapplication.AddNewSiteActivity$1.onClick(AddNewSiteActivity.java:53) 07-05 23:41:58.468:E/WindowManager(23992):在android.view.view.performClick(view.java:4107)上 07-05 23:41:58.468:E/WindowManager(23992):在android.view.view$PerformClick.run(view.java:17065) 07-05 23:41:58.468:E/WindowManager(23992):在android.os.Handler.handleCallback(Handler.java:615) 07-05 23:41:58.468:E/WindowManager(23992):位于android.os.Handler.dispatchMessage(Handler.java:92) 07-05 23:41:58.468:E/WindowManager(23992):位于android.os.Looper.loop(Looper.java:137) 07-05 23:41:58.468:E/WindowManager(23992):位于android.app.ActivityThread.main(ActivityThread.java:4830) 07-05 23:41:58.468:E/WindowManager(23992):位于java.lang.reflect.Method.Invokenactive(本机方法) 07-05 23:41:58.468:E/WindowManager(23992):位于java.lang.reflect.Method.invoke(Method.java:511) 07-05 23:41:58.468:E/WindowManager(23992):位于com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789) 07-05 23:41:58.468:E/WindowManager(23992):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556) 07-05 23:41:58.468:E/WindowManager(23992):在dalvik.system.NativeStart.main(本机方法) 07-05 23:42:03.508:I/进程(23992):发送信号。PID:23992信号:9
(现在,我展示了日志中提到的课程,如果需要其他课程,请告知,谢谢。)获得'';不幸的是,RSS应用程序已停止'';,显示的logcat'';致命异常:Asnyc任务2''; 07-05 23:41:57.638:E/AndroidRuntime(23992):致命异常:AsyncTask#2 07-05 23:41:57.638:E/AndroidRuntime(23992):java.lang.RuntimeException:执行doInBackground()时出错 07-05 23:41:57.638:E/AndroidRuntime(23992):在android.os.AsyncTask$3.done(AsyncTask.java:299) 07-05 23:41:57.638:E/AndroidRuntime(23992):位于java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273) 07-05 23:41:57.638:E/AndroidRuntime(23992):位于java.util.concurrent.FutureTask.setException(FutureTask.java:124) 07-05 23:41:57.638:E/AndroidRuntime(23992):在java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307) 07-05 23:41:57.638:E/AndroidRuntime(23992):在java.util.concurrent.FutureTask.run(FutureTask.java:137) 07-05 23:41:57.638:E/AndroidRuntime(23992):在android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) 07-05 23:41:57.638:E/AndroidRuntime(23992):位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) 07-05 23:41:57.638:E/AndroidRuntime(23992):位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) 07-05 23:41:57.638:E/AndroidRuntime(23992):在java.lang.Thread.run(Thread.java:856)处 07-05 23:41:57.638:E/AndroidRuntime(23992):原因:java.lang.NoClassDefFoundError:org.jsoup.jsoup 07-05 23:41:57.638:E/AndroidRuntime(23992):位于com.android.rssreaderapplication.RSSParser.getRSSLinkFromURL(RSSParser.java:157) 07-05 23:41:57.638:E/AndroidRuntime(23992):位于com.android.rssreaderapplication.RSSParser.getRSSFeed(RSSParser.java:57) 07-05 23:41:57.638:E/AndroidRuntime(23992):在com.android.rssreaderapplication.AddNewSiteActivity$loadRSSFeed.doInBackground(AddNewSiteActivity.java:98) 07-05 23:41:57.638:E/AndroidRuntime(23992):在com.android.rssreaderapplication.AddNewSiteActivity$loadRSSFeed.doInBackground(AddNewSiteActivity.java:1) 07-05 23:41:57.638:E/AndroidRuntime(23992):在android.os.AsyncTask$2.call(AsyncTask.java:287) 07-05 23:41:57.638:E/AndroidRuntime(23992):在java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 07-05 23:41:57.638:E/AndroidRuntime(23992):。。。还有5个 07-05 23:41:58.468:E/WindowManager(23992):Activity com.android.rssreaderapplication.addnewsite活动泄漏了window com.android.internal.policy.impl.PhoneWindow$DecorView@41d9e000原来是加在这里的 07-05 23:41:58.468:E/WindowManager(23992):android.view.WindowLeaked:Activity com.android.rssreaderapplication.addnewsite活动已泄漏window com.android.internal.policy.impl.PhoneWindow$DecorView@41d9e000原来是加在这里的 07-05 23:41:58.468:E/WindowManager(23992):在android.view.ViewRootImpl。(ViewRootImpl.java:380) 07-05 23:41:58.468:E/WindowManager(23992):在android.view.WindowManagerImpl.addView(WindowManagerImpl.java:292) 07-05 23:41:58.468:E/WindowManager(23992):在android.view.WindowManagerImpl.addView(WindowManagerImpl.java:224) 07-05 23:41:58.468:E/WindowManager(23992):在android.view.WindowManagerImpl$CompatModeWrapper.addView(WindowManagerImpl.java:149) 07-05 23:41:58.468:E/WindowManager(23992):在android.view.Window$LocalWindowManager.addView(Window.java:547) 07-05 23:41:58.468:E/WindowManager(23992):在android.app.Dialog.show(Dialog.java:277) 07-05 23:41:58.468:E/WindowManager(23992):位于com.android.rssreaderapplication.AddNewSiteActivity$loadRSSFeed.onPreExecute(AddNewSiteActivity.java:89) 07-05 23:41:58.468:E/WindowManager(23992):位于android.os.AsyncTask.executeOnExecutor(AsyncTask.java:586) 07-05 23:41:58.468:E/WindowManager(23992):在android.os.AsyncTask.execute(AsyncTask.java:534) 07-05 23:41:58.468:E/WindowManager(23992):位于com.android.rssreaderapplication.AddNewSiteActivity$1.onClick(AddNewSiteActivity.java:53) 07-05 23:41:58.468:E/WindowManager(23992):在android.view.view.performClick(view.java:4107)上 07-05 23:41:58.468:E/WindowManager(23992):在android.view.view$PerformClick.run(view.java:17065) 07-05 23:41:58.468:E/WindowManager(23992):在android.os.Handler.handleCallback(Handler.java:615) 07-05 23:41:58.468:E/WindowManager(23992):位于android.os.Handler.dispatchMessage(Handler.java:92) 07-05 23:41:58.468:E/WindowManager(23992):位于android.os.Looper.loop(Looper.java:137) 07-05 23:41:58.468:E/WindowManager(23992):位于android.app.ActivityThread.main(ActivityThread.java:4830) 07-05 23:41:58.468:E/WindowManager(23992):位于java.lang.reflect.Method.Invokenactive(本机方法) 07-05 23:41:58.468:E/WindowManager(23992):位于java.lang.reflect.Method.invoke(Method.java:511) 07-05 23:41:58.468:E/WindowManager(23992):位于com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789) 07-05 23:41:58.468:E/WindowManager(23992):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556) 07-05 23:41:58.468:E/WindowManager(23992):在dalvik.system.NativeStart.main(本机方法) 07-05 23:42:03.508:I/进程(23992):发送信号。PID:23992信号:9,java,web-services,url,android-asynctask,rss-reader,Java,Web Services,Url,Android Asynctask,Rss Reader,(现在,我展示了日志中提到的课程,如果需要其他课程,请告知,谢谢。) (这是我的主要活动代码:RssReaderApplication.java) import java.util.ArrayList; 导入java.util.HashMap; 导入java.util.List; 导入android.app.Activity; 导入android.app.ProgressDialog; 导入android.content.Intent; 导入android.os.AsyncTask; 导入and
(这是我的主要活动代码:RssReaderApplication.java)
import java.util.ArrayList;
导入java.util.HashMap;
导入java.util.List;
导入android.app.Activity;
导入android.app.ProgressDialog;
导入android.content.Intent;
导入android.os.AsyncTask;
导入android.os.Bundle;
导入android.view.ContextMenu;
导入android.view.ContextMenu.ContextMenuInfo;
导入android.view.Menu;
导入android.view.MenuItem;
导入android.view.view;
导入android.widget.AdapterView;
导入android.widget.Ada
07-05 23:41:57.638: E/AndroidRuntime(23992): FATAL EXCEPTION: AsyncTask #2
07-05 23:41:57.638: E/AndroidRuntime(23992): java.lang.RuntimeException: An error occured while executing doInBackground()
07-05 23:41:57.638: E/AndroidRuntime(23992): at android.os.AsyncTask$3.done(AsyncTask.java:299)
07-05 23:41:57.638: E/AndroidRuntime(23992): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
07-05 23:41:57.638: E/AndroidRuntime(23992): at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
07-05 23:41:57.638: E/AndroidRuntime(23992): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
07-05 23:41:57.638: E/AndroidRuntime(23992): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
07-05 23:41:57.638: E/AndroidRuntime(23992): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
07-05 23:41:57.638: E/AndroidRuntime(23992): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
07-05 23:41:57.638: E/AndroidRuntime(23992): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
07-05 23:41:57.638: E/AndroidRuntime(23992): at java.lang.Thread.run(Thread.java:856)
07-05 23:41:57.638: E/AndroidRuntime(23992): Caused by: java.lang.NoClassDefFoundError: org.jsoup.Jsoup
07-05 23:41:57.638: E/AndroidRuntime(23992): at com.android.rssreaderapplication.RSSParser.getRSSLinkFromURL(RSSParser.java:157)
07-05 23:41:57.638: E/AndroidRuntime(23992): at com.android.rssreaderapplication.RSSParser.getRSSFeed(RSSParser.java:57)
07-05 23:41:57.638: E/AndroidRuntime(23992): at com.android.rssreaderapplication.AddNewSiteActivity$loadRSSFeed.doInBackground(AddNewSiteActivity.java:98)
07-05 23:41:57.638: E/AndroidRuntime(23992): at com.android.rssreaderapplication.AddNewSiteActivity$loadRSSFeed.doInBackground(AddNewSiteActivity.java:1)
07-05 23:41:57.638: E/AndroidRuntime(23992): at android.os.AsyncTask$2.call(AsyncTask.java:287)
07-05 23:41:57.638: E/AndroidRuntime(23992): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
07-05 23:41:57.638: E/AndroidRuntime(23992): ... 5 more
07-05 23:41:58.468: E/WindowManager(23992): Activity com.android.rssreaderapplication.AddNewSiteActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@41d9e000 that was originally added here
07-05 23:41:58.468: E/WindowManager(23992): android.view.WindowLeaked: Activity com.android.rssreaderapplication.AddNewSiteActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@41d9e000 that was originally added here
07-05 23:41:58.468: E/WindowManager(23992): at android.view.ViewRootImpl.<init>(ViewRootImpl.java:380)
07-05 23:41:58.468: E/WindowManager(23992): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:292)
07-05 23:41:58.468: E/WindowManager(23992): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:224)
07-05 23:41:58.468: E/WindowManager(23992): at android.view.WindowManagerImpl$CompatModeWrapper.addView(WindowManagerImpl.java:149)
07-05 23:41:58.468: E/WindowManager(23992): at android.view.Window$LocalWindowManager.addView(Window.java:547)
07-05 23:41:58.468: E/WindowManager(23992): at android.app.Dialog.show(Dialog.java:277)
07-05 23:41:58.468: E/WindowManager(23992): at com.android.rssreaderapplication.AddNewSiteActivity$loadRSSFeed.onPreExecute(AddNewSiteActivity.java:89)
07-05 23:41:58.468: E/WindowManager(23992): at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:586)
07-05 23:41:58.468: E/WindowManager(23992): at android.os.AsyncTask.execute(AsyncTask.java:534)
07-05 23:41:58.468: E/WindowManager(23992): at com.android.rssreaderapplication.AddNewSiteActivity$1.onClick(AddNewSiteActivity.java:53)
07-05 23:41:58.468: E/WindowManager(23992): at android.view.View.performClick(View.java:4107)
07-05 23:41:58.468: E/WindowManager(23992): at android.view.View$PerformClick.run(View.java:17065)
07-05 23:41:58.468: E/WindowManager(23992): at android.os.Handler.handleCallback(Handler.java:615)
07-05 23:41:58.468: E/WindowManager(23992): at android.os.Handler.dispatchMessage(Handler.java:92)
07-05 23:41:58.468: E/WindowManager(23992): at android.os.Looper.loop(Looper.java:137)
07-05 23:41:58.468: E/WindowManager(23992): at android.app.ActivityThread.main(ActivityThread.java:4830)
07-05 23:41:58.468: E/WindowManager(23992): at java.lang.reflect.Method.invokeNative(Native Method)
07-05 23:41:58.468: E/WindowManager(23992): at java.lang.reflect.Method.invoke(Method.java:511)
07-05 23:41:58.468: E/WindowManager(23992): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
07-05 23:41:58.468: E/WindowManager(23992): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556)
07-05 23:41:58.468: E/WindowManager(23992): at dalvik.system.NativeStart.main(Native Method)
07-05 23:42:03.508: I/Process(23992): Sending signal. PID: 23992 SIG: 9
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ImageButton;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
public class RssReaderApplication extends Activity {
// Progress Dialog
private ProgressDialog pDialog;
// Array list for list view
ArrayList<HashMap<String, String>> rssFeedList;
RSSParser rssParser = new RSSParser();
RSSFeed rssFeed;
// button add new website
ImageButton btnAddSite;
// array to trace sqlite ids
String[] sqliteIds;
public static String TAG_ID = "id";
public static String TAG_TITLE = "title";
public static String TAG_LINK = "link";
// List view
ListView lv;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.site_list);
btnAddSite = (ImageButton) findViewById(R.id.btnAddSite);
// Hashmap for ListView
rssFeedList = new ArrayList<HashMap<String, String>>();
/**
* Calling a background thread which will load
* web sites stored in SQLite database
* */
new loadStoreSites().execute();
// selecting single ListView item
lv = (ListView) findViewById(R.id.list);
// Launching new screen on Selecting Single ListItem
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// getting values from selected ListItem
String sqlite_id = ((TextView) view.findViewById(R.id.sqlite_id)).getText().toString();
// Starting new intent
Intent in = new Intent(getApplicationContext(), ListRSSItemsActivity.class);
// passing sqlite row id
in.putExtra(TAG_ID, sqlite_id);
startActivity(in);
}
});
/**
* Add new website button click event listener
* */
btnAddSite.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent i = new Intent(getApplicationContext(), AddNewSiteActivity.class);
// starting new activity and expecting some response back
// depending on the result will decide whether new website is
// added to SQLite database or not
startActivityForResult(i, 100);
}
});
}
/**
* Response from AddNewSiteActivity.java
* if response is 100 means new site is added to sqlite
* reload this activity again to show
* newly added website in listview
* */
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// if result code 100
if (resultCode == 100) {
// reload this screen again
Intent intent = getIntent();
finish();
startActivity(intent);
}
}
/**
* Building a context menu for listview
* Long press on List row to see context menu
* */
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
if (v.getId()==R.id.list) {
menu.setHeaderTitle("Delete");
menu.add(Menu.NONE, 0, 0, "Delete Feed");
}
}
/**
* Responding to context menu selected option
* */
@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)item.getMenuInfo();
int menuItemIndex = item.getItemId();
// check for selected option
if(menuItemIndex == 0){
// user selected delete
// delete the feed
RSSDatabaseHandler rssDb = new RSSDatabaseHandler(getApplicationContext());
WebSite site = new WebSite();
site.setId(Integer.parseInt(sqliteIds[info.position]));
rssDb.deleteSite(site);
//reloading same activity again
Intent intent = getIntent();
finish();
startActivity(intent);
}
return true;
}
/**
* Background Async Task to get RSS data from URL
* */
class loadStoreSites extends AsyncTask<String, String, String> {
/**
* Before starting background thread Show Progress Dialog
* */
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(
RssReaderApplication.this);
pDialog.setMessage("Loading websites ...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(false);
pDialog.show();
}
/**
* getting all stored website from SQLite
* */
@Override
protected String doInBackground(String... args) {
// updating UI from Background Thread
runOnUiThread(new Runnable() {
public void run() {
RSSDatabaseHandler rssDb = new RSSDatabaseHandler(
getApplicationContext());
// listing all websites from SQLite
List<WebSite> siteList = rssDb.getAllSites();
sqliteIds = new String[siteList.size()];
// loop through each website
for (int i = 0; i < siteList.size(); i++) {
WebSite s = siteList.get(i);
// creating new HashMap
HashMap<String, String> map = new HashMap<String, String>();
// adding each child node to HashMap key => value
map.put(TAG_ID, s.getId().toString());
map.put(TAG_TITLE, s.getTitle());
map.put(TAG_LINK, s.getLink());
// adding HashList to ArrayList
rssFeedList.add(map);
// add sqlite id to array
// used when deleting a website from sqlite
sqliteIds[i] = s.getId().toString();
}
/**
* Updating list view with websites
* */
ListAdapter adapter = new SimpleAdapter(
RssReaderApplication.this,
rssFeedList, R.layout.site_list_row,
new String[] { TAG_ID, TAG_TITLE, TAG_LINK },
new int[] { R.id.sqlite_id, R.id.title, R.id.link });
// updating listview
lv.setAdapter(adapter);
registerForContextMenu(lv);
}
});
return null;
}
/**
* After completing background task Dismiss the progress dialog
* **/
protected void onPostExecute(String args) {
// dismiss the dialog after getting all products
pDialog.dismiss();
}
}
}
import java.util.List;
public class RSSFeed {
String _title;
String _description;
String _link;
String _rss_link;
String _language;
List<RSSItem> _items;
// constructor
public RSSFeed(String title, String description, String link,String rss_link, String language) {
this._title = title;
this._description = description;
this._link = link;
this._rss_link = rss_link;
this._language = language;
}
/**
* All set methods
* */
public void setItems(List<RSSItem> items) {
this._items = items;
}
/**
* All get methods
* */
public List<RSSItem> getItems() {
return this._items;
}
public String getTitle() {
return this._title;
}
public String getDescription() {
return this._description;
}
public String getLink() {
return this._link;
}
public String getRSSLink() {
return this._rss_link;
}
public String getLanguage() {
return this._language;
}
}
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class AddNewSiteActivity extends Activity {
Button btnSubmit;
Button btnCancel;
EditText txtUrl;
TextView lblMessage;
RSSParser rssParser = new RSSParser();
RSSFeed rssFeed;
// Progress Dialog
private ProgressDialog pDialog;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.add_site);
// buttons
btnSubmit = (Button) findViewById(R.id.btnSubmit);
btnCancel = (Button) findViewById(R.id.btnCancel);
txtUrl = (EditText) findViewById(R.id.txtUrl);
lblMessage = (TextView) findViewById(R.id.lblMessage);
// Submit button click event
btnSubmit.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
String url = txtUrl.getText().toString();
// Validation url
Log.d("URL Length", "" + url.length());
// check if user entered any data in EditText
if (url.length() > 0) {
lblMessage.setText("");
String urlPattern = "^http(s{0,1})://[a-zA-Z0-9_/\\-\\.]+\\.([A-Za-z/]{2,5})[a-zA-Z0-9_/\\&\\?\\=\\-\\.\\~\\%]*";
if (url.matches(urlPattern)) {
// valid url
new loadRSSFeed().execute(url);
} else {
// URL not valid
lblMessage.setText("Please enter a valid url");
}
} else {
// Please enter url
lblMessage.setText("Please enter website url");
}
}
});
// Cancel button click event
btnCancel.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
finish();
}
});
}
/**
* Background Async Task to get RSS data from URL
* */
class loadRSSFeed extends AsyncTask<String, String, String> {
/**
* Before starting background thread Show Progress Dialog
* */
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(AddNewSiteActivity.this);
pDialog.setMessage("Fetching RSS Information ...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(false);
pDialog.show();
}
/**
* getting Inbox JSON
* */
@Override
protected String doInBackground(String... args) {
String url = args[0];
rssFeed = rssParser.getRSSFeed(url);
Log.d("rssFeed", " "+ rssFeed);
if (rssFeed != null) {
Log.e("RSS URL",
rssFeed.getTitle() + "" + rssFeed.getLink() + ""
+ rssFeed.getDescription() + ""
+ rssFeed.getLanguage());
RSSDatabaseHandler rssDb = new RSSDatabaseHandler(
getApplicationContext());
WebSite site = new WebSite(rssFeed.getTitle(), rssFeed.getLink(), rssFeed.getRSSLink(),
rssFeed.getDescription());
rssDb.addSite(site);
Intent i = getIntent();
// send result code 100 to notify about product update
setResult(100, i);
finish();
} else {
// updating UI from Background Thread
runOnUiThread(new Runnable() {
public void run() {
lblMessage.setText("Rss url not found. Please check the url or try again");
}
});
}
return null;
}
/**
* After completing background task Dismiss the progress dialog
* **/
protected void onPostExecute(String args) {
// dismiss the dialog after getting all products
pDialog.dismiss();
// updating UI from Background Thread
runOnUiThread(new Runnable() {
public void run() {
if (rssFeed != null) {
}
}
});
}
}
}
07-05 23:41:57.638: E/AndroidRuntime(23992): Caused by: java.lang.NoClassDefFoundError: org.jsoup.Jsoup