2011-08-07 68 views
0

我對這個android的東西仍然陌生,但我正在嘗試編寫一個小部件。我得到了所有需要在獨立應用程序中工作的代碼,但我現在試圖讓它作爲一個小部件發揮作用。但我在啓動聯繫人選擇器意圖時遇到了一些問題。無法使用窗口小部件類中的startActivityForResult

基本上,我想要做的是在創建一個窗口小部件時啓動聯繫人選擇器的意圖,但那個簡單的代碼不適用於我,我不知道它有什麼問題。下面是代碼片...

public class WidgetProvider extends AppWidgetProvider 
{ 
    .... 

    @Override 
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) 
    { //User is creating a new widget. 
    //Select a contact. 
    int contact_pick = 1; 
    //Contact Picker 
    Intent PickContact = new Intent(
     Intent.ACTION_PICK, 
     ContactsContract.Contacts.CONTENT_URI 
    ); 
    startActivityForResult(PickContact, contact_pick); 
    } 

    .... 
} 

日食只是提供了以下消息的startactivity行:該方法startActivityForResult(意向,INT)是未定義的類型 WidgetProvider

任何想法我我在這裏做錯了嗎?

回答

2

startActivityForResult()只在Activity上可用。您無法從AppWidgetProvider中選擇聯繫人。但是,您可以使用startActivity()開始常規Activity,然後可以使用startActivityForResult()選擇聯繫人。

+0

這讓我回到了正軌......謝謝!我創建了一個新班,現在打電話給班級。 – trey85stang

0

首先,有點挑剔:你不應該爲你的變量使用大寫字母,你的選擇器pickContact,而不是PickContact。

其次,您的消息告訴您未定義類型WidgetProvider。 WidgetProvider,你的類,擴展AppWidgetProvider,但是除非我誤解了,AppWidgetProvider缺少startActivityForResult。因此,該消息,你不是從你應該叫它從類中調用方法...

+0

你能說清楚挑剔嗎?爲什麼需要在變量的第一個字母上使用小寫字母? – trey85stang

+0

因爲這是Java標準,所以它可以讓你的Java開發人員更容易閱讀。本身並不是必需的,但當您的代碼庫增加時,您會發現它很有用。你可以用allcaps中的小寫名稱和變量編寫類,但是你的代碼很快就會變得不可讀,想象一下,如果你使用混合的靜態方法和鏈接,就像objectUsed.Method(classname.STATICMETHOD())...已經很難閱讀只有兩個電話:D – Kheldar

相關問題