[英]Taping an android home-screen widget doesn't work the second time
I am new to Android(started yesterday :)) 我是Android的新手(昨天开始:)
I am trying to make a simple home-screen widget with a TextView that changes it's value when you tap on it. 我试图用一个TextView制作一个简单的主屏幕小部件,当您点击它时会更改它的值。
Things aren't going so well. 事情进展不顺利。 It only works after I tap it 3 times and then it works once and never works again. 它只有在我轻按3次后才能工作,然后又能工作一次,再也不会工作。 Also the debugger always crashes after I "step over" for the first time. 同样,在我第一次“越过”之后,调试器总是崩溃。
Manifest: 表现:
<application
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name">
<receiver android:name=".GeeDeeBeeDee"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
<action android:name="android.appwidget.action.APPWIDGET_CLICK" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/gee_dee_bee_dee_info" />
</receiver>
</application>
Widget class: 窗口小部件类:
public class GeeDeeBeeDee extends AppWidgetProvider {
private int DayType = 0;
public static String APPWIDGET_CLICK = "android.appwidget.action.APPWIDGET_CLICK";
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
// There may be multiple widgets active, so update all of them
final int N = appWidgetIds.length;
for (int i = 0; i < N; i++) {
updateAppWidget(context, appWidgetManager, appWidgetIds[i]);
and then: 接着:
static void updateAppWidget(Context context, AppWidgetManager appWidgetManager,int appWidgetId)
{
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.gee_dee_bee_dee);
Intent intent = new Intent(APPWIDGET_CLICK);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, appWidgetId, intent, 0);
views.setOnClickPendingIntent(R.id.appwidget_text, pendingIntent );
appWidgetManager.updateAppWidget(appWidgetId, views);
}
@Override
public void onReceive(Context context, Intent intent)
{
int widgetId = 0;
if (APPWIDGET_CLICK.equals(intent.getAction()))
{
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.gee_dee_bee_dee);
if(DayType == 0)
remoteViews.setTextViewText(R.id.appwidget_text, "0");
else if(DayType == 1)
remoteViews.setTextViewText(R.id.appwidget_text, "1");
else if(DayType == 2)
remoteViews.setTextViewText(R.id.appwidget_text, "2");
if(DayType > 2)
DayType = 0;
Bundle extras = intent.getExtras();
if(extras!=null)
{
widgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID);
}
if(widgetId > 0)
appWidgetManager.updateAppWidget(widgetId, remoteViews);
}
else
super.onReceive(context, intent);
}
Can anyone help, please? 有人可以帮忙吗? Thank you in advance. 先感谢您。
I believe the problem is in your onUpdate()
method. 我相信问题出在您的onUpdate()
方法中。 You may want to check this link: Android: How to update widget text on creation 您可能需要检查以下链接: Android:如何在创建时更新小部件文本
I hope it will help you. 希望对您有帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.