簡體   English   中英

應用小部件提供商崩潰

[英]App Widget Provider Crashing

當我啟動我的小部件時,該小部件旨在將Intent附加到按鈕上。 目的是啟動一項服務,此刻目前僅在做吐司。 我不認為這是我的清單是錯的,因為我已經檢查了很多次,並且我的IDE沒有顯示任何錯誤。

表現:

    <service android:name=".Killer"></service>

    <receiver android:name=".Provider">
        <intent-filter>
            <action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
        </intent-filter>
        <meta-data android:name="android.appwidget.provider"
            android:resource="@xml/app_widget_info"/>
    </receiver>  

AppWidget提供程序:

public class Provider extends AppWidgetProvider{

    @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
        // Perform this loop procedure for each App Widget that belongs to this provider
        for (int i : appWidgetIds) {
            int appWidgetId = appWidgetIds[i];

            // Create an Intent to launch Killer
            Intent intent = new Intent(context, Killer.class);

            // Get the layout for the App Widget and attach an on-click listener
            // to the button
            RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
            views.setRemoteAdapter(R.id.kill, intent);

            // Tell the AppWidgetManager to perform an update on the current app widget
            appWidgetManager.updateAppWidget(appWidgetId, views);
        }
    }
}

服務:

public class Killer extends Service{

    @Override
    public void onCreate() {
        super.onCreate();
        Toast.makeText(this, "service done", Toast.LENGTH_SHORT).show();

    }

    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }
}

LogCat錯誤:

java.lang.RuntimeException: Unable to start receiver uk.co.clickcomputing.simpleappkillerwidget.Provider: java.lang.ArrayIndexOutOfBoundsException: length=1; index=111
            at android.app.ActivityThread.handleReceiver(ActivityThread.java:2674)
            at android.app.ActivityThread.access$1800(ActivityThread.java:174)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1383)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:146)
            at android.app.ActivityThread.main(ActivityThread.java:5593)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.ArrayIndexOutOfBoundsException: length=1; index=111
            at uk.co.clickcomputing.simpleappkillerwidget.Provider.onUpdate(Provider.java:16)
            at android.appwidget.AppWidgetProvider.onReceive(AppWidgetProvider.java:66)
            at android.app.ActivityThread.handleReceiver(ActivityThread.java:2659)
            at android.app.ActivityThread.access$1800(ActivityThread.java:174)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1383)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:146)
            at android.app.ActivityThread.main(ActivityThread.java:5593)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
            at dalvik.system.NativeStart.main(Native Method)

更換:

for (int i : appWidgetIds) {
        int appWidgetId = appWidgetIds[i];

與:

for (int appWidgetId : appWidgetIds) {

如果將增強for語法用於迭代集合,則迭代的是集合的值,而不是數組索引。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM