You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio Arctic Fox开发小部件出现Problem Loading Widget问题求助

修复方案

需修改的4个核心问题:

  • 小部件布局使用了RemoteViews不支持的app:srcCompat属性,该属性属于AppCompat兼容库,桌面部件的RemoteViews仅支持安卓原生框架属性
  • QR_code_widget.java中更新部件时错误传入了全部id数组,而非当前遍历的单个部件id
  • Android 12及以上系统要求PendingIntent必须显式声明可变性标志,原代码使用flag=0会触发异常
  • 布局文件名与代码引用不一致:你提供的布局文件名为activity_main.xml,但所有代码中引用的是R.layout.widget_layout,需统一命名

对应修改代码

1. 部件布局文件(统一文件名后修改内容)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageButton
        android:id="@+id/imageButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#00FFFFFF"
        android:src="@drawable/qr_code_banner"
        tools:ignore="SpeakableTextPresentCheck" />
</RelativeLayout>

移除了app命名空间引用,将app:srcCompat替换为原生android:src


2. QR_code_widget.java 修改

package com.mine.qrcode_widget;
import android.annotation.SuppressLint;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
import android.content.Intent;
import android.app.PendingIntent;
import android.widget.RemoteViews;

public class QR_code_widget extends AppWidgetProvider {
    @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
        super.onUpdate(context, appWidgetManager, appWidgetIds);
        for (int appWidget : appWidgetIds) {
            Intent intent = new Intent(context, MainActivity.class);
            // 新增PendingIntent可变性标志,Android 12+要求
            PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_IMMUTABLE);

            @SuppressLint("RemoteViewLayout") RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
            views.setOnClickPendingIntent(R.id.imageButton, pendingIntent);

            // 修正参数:传入当前单个部件id而非整个数组
            appWidgetManager.updateAppWidget(appWidget, views);
        }
    }
}

3. 命名统一检查

确认你的布局文件名为widget_layout.xml,如果实际是activity_main.xml,请将上述代码中所有R.layout.widget_layout替换为R.layout.activity_main即可。

修改完成后卸载原应用重新安装即可正常显示小部件。

内容的提问来源于stack exchange,提问作者Stamina Overlook

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 01:24:03