Java 录制安卓主屏幕小部件不会';我第二次不工作了
我是Android新手(从昨天开始:)Java 录制安卓主屏幕小部件不会';我第二次不工作了,java,android,widget,Java,Android,Widget,我是Android新手(从昨天开始:) 我正在尝试制作一个带有文本视图的简单主屏幕小部件,当你点击它时,它会改变它的值。 事情进展得不太顺利。它只在我轻触它3次后才工作,然后它工作一次,再也不工作了。此外,调试器总是在我第一次“跳过”后崩溃 舱单: <application android:icon="@mipmap/ic_launcher" android:label="@string/app_name"> <receiver android:name
我正在尝试制作一个带有文本视图的简单主屏幕小部件,当你点击它时,它会改变它的值。
事情进展得不太顺利。它只在我轻触它3次后才工作,然后它工作一次,再也不工作了。此外,调试器总是在我第一次“跳过”后崩溃 舱单:
<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>
有人能帮忙吗?提前谢谢。我相信问题出在您的
onUpdate()
方法中。您可能需要检查此链接:
我希望它能帮助你
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]);
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);
}