2011-10-08 55 views
1

我寫了這個簡單的代碼來獲得來自瀏覽器的書籤:如何使用瀏覽器內容提供程序?

public class BroswerProviderActivity extends ListActivity { 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     Cursor cursor = getContentResolver().query(Browser.BOOKMARKS_URI, null, null, null, null); 

     String s[] = new String[]{ 
       Browser.BookmarkColumns.BOOKMARK, 
       Browser.BookmarkColumns.TITLE}; 
     int view[] = new int[]{ 
       R.id.Bookmark, R.id.title}; 

     SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.main, cursor, s, view); 

     this.setListAdapter(adapter); 
    } 
} 

我還添加了清單文件的權限:

<uses-permission android:name="com.android.browser.permission.READ_HISTORY_BOOKMARKS"> 

但是,當我運行這個程序,它是不工作。它顯示一些錯誤並要求強制停止應用程序。這有什麼問題?請幫助我。謝謝

這是我從LogCat窗口得到的異常。但是,這是不相關的:enter image description here

下面是我寫的XML文件:

<ListView android:transcriptMode="normal" android:id="@+id/list"  android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1.0"></ListView> 
<TextView android:text="TextView" android:id="@+id/bookmark" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView> 
<TextView android:text="TextView" android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView> 
+0

什麼樣的錯誤? –

+1

由於您正在獲得「強制關閉」對話框:請從logcat發佈堆棧跟蹤。謝謝。 – 2011-10-08 12:38:02

+0

@PeterKnego請看我在LogCat中得到的異常 – Pramod

回答

1

因爲你在你的佈局XML 使用ListActivityListView的ID必須@android:id/list

查看docs

+0

謝謝。它的工作。但我不明白爲什麼?在使用Contacts內容提供程序時,我使用@ + id/list作爲相同的程序。爲什麼它不支持相同的語法 – Pramod

+0

您可能使用普通的Activity而不是ListActivity,或者不使用'setContentView()'。原因很簡單。 ListActivity在內部使用'findViewById()',這個ID是硬編碼的。如果你自己設置佈局,它會搜索它,在這種情況下找不到它。如果你沒有自己設置佈局,只需添加一個帶有這個ID的ListView作爲它自己的佈局。 – 2011-10-09 10:25:45

+0

@alextsc我已經仔細檢查了我爲聯繫人內容提供者編寫的代碼。一切都與上面的代碼結構相同。 – Pramod

相關問題