私は本当にシンプルなappwidget(2つのテキストビューとボタン)を持っています。私はTouchpad、Droid 1、Droid Razrでテストしました。それはRazr以外のすべてに作用します。ウィジェットをホームスクリーンに追加すると、ウィジェットは表示されません。それはちょうど目に見えない。私はそれがある場所を押さえているとウィジェットを選択し、私がそれを周りに移動すると、他のウィジェットが途中で移動するのを見るが、それは完全に見えない。Android AppWidgetが特定の電話機に表示されない
私はいくつかのトーストをonReceive
とonEnabled
の方法で入れて、Toast
はすべての正しい情報(すなわち、インテントのアクションとエキストラ)を表示します。
誰もがこれに関する経験がありますか?
はEDIT:これは単なるデバッグ用であり、ベストプラクティス
public class GoogleTalkWidget extends AppWidgetProvider {
Button sendMessage;
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "Received Intent Action = " +
intent.getAction(), Toast.LENGTH_SHORT).show();
if(intent.getAction().equals(Utils.RECEIVED_MESSAGE_WIDGET)){
RemoteViews views = new RemoteViews(context.getPackageName(),
R.layout.main_widget);
views.setTextViewText(R.id.widget_message,
(CharSequence)intent.getStringExtra("MESSAGE"));
views.setTextViewText(R.id.widget_sender,
(CharSequence)intent.getStringExtra("SENDER"));
Toast.makeText(context, "Received " +
intent.getStringExtra("MESSAGE") + " FROM " +
intent.getStringExtra("SENDER"), Toast.LENGTH_SHORT).show();
ComponentName cn = new ComponentName(context,
GoogleTalkWidget.class);
AppWidgetManager.getInstance(context).updateAppWidget(cn, views);
}
super.onReceive(context, intent);
}
@Override
public void onEnabled(final Context context){
super.onEnabled(context);
Toast.makeText(context, "Enabled", Toast.LENGTH_SHORT).show();
}
}
'onReceive()'? 'AppWidgetProvider'の' onUpdate() 'を意味しますか? – CommonsWare
appwidgetの 'onReceive()'メソッドをオーバーライドすることもできます...以前のバージョンのAndroidに 'onDelete'の問題があったので残したと思います。 – Eliezer
私はそれを理解しています。しかし、 'onUpdate()'は一般的に 'RemoteViews'を提供してアプリケーションウィジェットに何を入れるべきかを宣言します。 'onUpdate()'が呼び出されていて、 'RemoteViews'を正常に供給していますか? LogCatに関連する可能性のあるものはありますか(例えば、トレースをスタックする)か? – CommonsWare