2011-08-07 5 views
0

まだこのAndroidの新しいものですが、私はウィジェットを作成しようとしています。私はスタンドアローンのアプリケーションで作業する必要があるすべてのコードを手に入れましたが、今はウィジェットとして機能させるようにしようとしています。しかし、私はコンタクトピッカーの意図を開始するいくつかの問題を抱えています。ウィジェットクラス内でstartActivityForResultを使用することができません

基本的には、ウィジェットが作成されたときに連絡先ピッカーのインテントを起動しますが、その単純なコードは私のためには機能しません。何が間違っているのかわかりません。ここだけstartactivityラインのために、次のメッセージを表示します

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

    .... 
} 

Eclipseコードのスライスが...ある:メソッドstartActivityForResult(テント、int)がタイプに定義されていない WidgetProvider

任意のアイデア何Iここで間違っていますか?

答えて

2

startActivityForResult()は、Activityでのみ利用可能です。連絡先をAppWidgetProviderから選択することはできません。ただし、startActivity()を使用して通常のActivityを開始し、startActivityForResult()を使用して連絡先を選択することができます。

+0

これは私をトラックに戻しました...ありがとう!私は新しいクラスを作成し、クラスを呼び出します。 – trey85stang

0

まず、ちょっとニックピッキングします。変数に大文字を使用しないでください.PickContactではなくpicker pickContactを呼び出してください。

第2に、あなたのメッセージは、未定義にタイプWidgetProviderを伝えます。あなたのクラスであるWidgetProviderはAppWidgetProviderまで拡張されますが、間違いない限り、AppWidgetProviderにはstartActivityForResultがありません。したがって、あなたはそれを呼び出すべきクラスのメソッドを呼び出していません...

+0

あなたはニックピッキングについて明確にすることができますか?なぜ変数の最初の文字に小文字を使用する必要があるのですか? – trey85stang

+0

これはJavaの標準であり、仲間のJava開発者の方が読みやすくなります。これは必ずしも必要ではありませんが、コードベースが成長するときには後で役に立ちます。あなたは小文字の名前と変数をallcapで書くことができますが、あなたのコードはまもなく読めなくなります。例えば、objectUsed.Method(classname.STATICMETHOD())のように、静的メソッドと連鎖を組み合わせて使用​​すると想像してください。たった2回の呼び出しで読むことができます:D – Kheldar

関連する問題