Mam naprawdę prosty appwidget (dwa widoki tekstu i przycisk). Przetestowałem to na tablecie Touchpad, Droid 1 i Droid Razr. Działa na wszystko oprócz Razra. Po dodaniu widżetu do ekranu głównego nie wyświetla się; to jest po prostu niewidzialne. Jeśli zatrzymam się w miejscu, w którym się znajduje, wybierze widżet, a gdy go przeniesię, widzę, że inne widżety znikają z drogi, ale są całkowicie niewidoczne.Android AppWidget nie wyświetla się w niektórych telefonach
Umieściłem kilka grzanek w metodach onReceive
i onEnabled
, a Toast
wyświetla wszystkie właściwe informacje (tj. Działania i dodatki).
Ktoś ma jakieś doświadczenie z tym?
EDIT: Pamiętaj, to tylko do debugowania i nie śledzić najlepszych praktyk
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()'? Masz na myśli 'onUpdate()' swojego 'AppWidgetProvider'? – CommonsWare
możesz również zastąpić metodę 'onReceive()' w appwidget ... Myślę, że ją zostawili, ponieważ wcześniejsze wersje Androida miały pewne problemy z 'onDelete' – Eliezer
Rozumiem to. Jednakże, 'onUpdate()' jest na ogół tym, gdzie dostarczasz 'RemoteViews', aby zadeklarować, co powinno się znaleźć w widżecie aplikacji. Czy wywoływane jest 'onUpdate()' i czy pomyślnie dostarczasz 'RemoteViews'? Czy jest coś w LogCat, które może odnosić się (np. Ślady stosu)? – CommonsWare