2011-11-14 18 views
3

ウィジェットをクリックしてダイアログボックスを開くことができます。公式の文書を非公式のものとして読んだことがあります。私は当初は新しい活動を開始したかったのですが、それでも失敗しました。私はLogcatで次のようになりますが、実際には何も見えません。Android Widget onClick

11-14 21:28:47.929: INFO/ActivityManager(116): Starting: Intent { flg=0x10000000 cmp=com.android.app/.Execute bnds=[179,89][300,160] } from pid -1 

上記のことは、意図が合格したことを意味すると思います...しかし、実際にはアクティビティは開始されませんでした。開始されるべき活動が通常の活動であるべきか?

使用されるコードは次のとおりです。

public class ExampleAppWidgetProvider extends AppWidgetProvider { 

public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { 
    final int N = appWidgetIds.length; 

    // Perform this loop procedure for each App Widget that belongs to this provider 
    for (int i=0; i<N; i++) { 
     int appWidgetId = appWidgetIds[i]; 

     // Create an Intent to launch ExampleActivity 
     Intent intent = new Intent(context, ExampleActivity.class); 
     PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0); 

     // Get the layout for the App Widget and attach an on-click listener 
     // to the button 
     RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.appwidget_provider_layout); 
     views.setOnClickPendingIntent(R.id.button, pendingIntent); 

     // Tell the AppWidgetManager to perform an update on the current app widget 
     appWidgetManager.updateAppWidget(appWidgetId, views); 
    } 
} 
} 

任意の考え?

+0

これで運を?私もそれを観察している。私もこれを見ています。私が自分のアプリケーションの1つから通知したアクティビティを起動しようとしたときです。 -1と表示されているプロセスIDと関係があると思います。 通常、インテントによって他のアクティビティが起動されると、プロセスIDは-1ではなく、OSによって割り当てられた別の番号になります。 –

+0

問題は解決されました.. pidは-1とは関係ありませんでした。私の実際の問題は、私のコードでtypoがあったということでした。 "XYZActivity"と入力する代わりに、 "XYZACtivity"大文字のC)、それは文字列として指定されて以来、Androidによって投げられたエラーはありませんでした。おそらくあなたの場合も同様のものがありますか? –

+0

それで、-1は何についてですか?あなたが始めたいアクティビティのスペルが間違っていたことを意味しますか?私はスペルミスを見ません。ウィジェットクリックで起動されるアクティビティが意図をどのように扱うのか?それともこれは無関係ですか? – JustCurious

答えて

2

問題の原因としては、マニフェストにExampleActivityを宣言していない可能性があります。

<UPDATE>

また、あなたのPendingIntent創造の引数2の一意の番号を使用して試してみても、引数4で賢明なフラグを入れることができます:

PendingIntent pendingIntent = PendingIntent.getActivity(context, appWidgetId, intent, PendingIntent.FLAG_UPDATE_CURRENT); 
+0

私は..... ..... – JustCurious

+0

私はあなたのために何か新しい試みを試してみました。 –

+0

私もそれを試みました。何も変わっていません。実行しようとしているアクティビティが意図したとおりにコード化されていない可能性はありますか?私は、新しい活動に含める必要がある特別なものがあることを意味していますか? – JustCurious