Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有多个按钮的android小部件_Android_Button_Click_Widget - Fatal编程技术网

具有多个按钮的android小部件

具有多个按钮的android小部件,android,button,click,widget,Android,Button,Click,Widget,我开发了一个android小部件,上面有多个按钮。它工作得很好,我第一次添加。但当我重新启动设备时,按钮不会启动。这就是我所做的 下面是xml配置 <receiver android:name="com.islem.widget.MyWidgetMain" android:label="@string/app_name"> <intent-filter> <action android:name="android.appwidget.action.APPWI

我开发了一个android小部件,上面有多个按钮。它工作得很好,我第一次添加。但当我重新启动设备时,按钮不会启动。这就是我所做的

下面是xml配置

<receiver android:name="com.islem.widget.MyWidgetMain" android:label="@string/app_name">
<intent-filter>
    <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
    <!-- Broadcast Receiver that will also process our self created action -->
    <action android:name="com.islem.widget.KalanWidgetMain.ACTION_WIDGET_RECEIVER1"/>
    <action android:name="com.islem.widget.KalanWidgetMain.ACTION_WIDGET_RECEIVER2"/>
    <action android:name="com.islem.widget.KalanWidgetMain.ACTION_WIDGET_RECEIVER3"/>
    <action android:name="com.islem.widget.KalanWidgetMain.ACTION_WIDGET_RECEIVER4"/>
    <action android:name="com.islem.widget.KalanWidgetMain.ACTION_WIDGET_RECEIVER5"/>
    <action android:name="com.islem.widget.KalanWidgetMain.ACTION_WIDGET_RECEIVER6"/>
    <action android:name="com.islem.widget.KalanWidgetMain.ACTION_WIDGET_RELOAD_ALARM"/>

</intent-filter>
<meta-data android:name="android.appwidget.provider" android:resource="@xml/k_widget_provider" />
下面是onReceive方法

    @Override
public void onReceive(Context context, Intent intent) {

    System.out.println("on onReceive");     
    Toast.makeText(context, "onReceive", Toast.LENGTH_SHORT).show();

    // v1.5 fix that doesn't call onDelete Action
    final String action = intent.getAction();
    if (AppWidgetManager.ACTION_APPWIDGET_DELETED.equals(action)) {
        final int appWidgetId = intent.getExtras().getInt(
                AppWidgetManager.EXTRA_APPWIDGET_ID,
                AppWidgetManager.INVALID_APPWIDGET_ID);
        if (appWidgetId != AppWidgetManager.INVALID_APPWIDGET_ID) {
            this.onDeleted(context, new int[] { appWidgetId });
        }
    } else {

        if (intent.getAction().equals(ACTION_WIDGET_RECEIVER1) || intent.getAction().equals(ACTION_WIDGET_RECEIVER2) ||
                intent.getAction().equals(ACTION_WIDGET_RECEIVER3) || intent.getAction().equals(ACTION_WIDGET_RECEIVER4) ||
                intent.getAction().equals(ACTION_WIDGET_RECEIVER5) || intent.getAction().equals(ACTION_WIDGET_RECEIVER6) ||
                intent.getAction().equals(ACTION_WIDGET_RELOAD_ALARM) 
                ) {             
            int appWidgetId = intent.getExtras().getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID);
            System.out.println("appWidgetId:" + appWidgetId + ", action:" + action);




        }


        super.onReceive(context, intent);
    }
}

当手机重新启动时,它将调用
oneable
,而不是
onUpdate

--更新--


这将获取由AppWigetProvider控制的所有ID。阅读更多关于

的内容,我已经将onupdate的内容移动到一个方法中,并像下面那样从onEnabled和onupdate调用,但不起作用。我还可以在重新启动时看到更新日志。@Override public void onEnabled(Context Context){//TODO自动生成的方法stub super.onEnabled(Context);Toast.makeText(Context,“onEnabled”,Toast.LENGTH_SHORT).show();int[]appWidgetIds=AppWidgetManager.getInstance(Context).getAppWidgetIds(new ComponentName(Context,KalanWidgetMain.class));startWidget(context,AppWidgetManager.getInstance(context,appWidgetIds);}不要从onUpdate中删除,只需在ONEnabled中复制您已将小部件上载到某个地方,我需要查看其代码。如果您能提供帮助,它将非常有用。我是Android新手,正在尝试构建小部件。
    @Override
public void onReceive(Context context, Intent intent) {

    System.out.println("on onReceive");     
    Toast.makeText(context, "onReceive", Toast.LENGTH_SHORT).show();

    // v1.5 fix that doesn't call onDelete Action
    final String action = intent.getAction();
    if (AppWidgetManager.ACTION_APPWIDGET_DELETED.equals(action)) {
        final int appWidgetId = intent.getExtras().getInt(
                AppWidgetManager.EXTRA_APPWIDGET_ID,
                AppWidgetManager.INVALID_APPWIDGET_ID);
        if (appWidgetId != AppWidgetManager.INVALID_APPWIDGET_ID) {
            this.onDeleted(context, new int[] { appWidgetId });
        }
    } else {

        if (intent.getAction().equals(ACTION_WIDGET_RECEIVER1) || intent.getAction().equals(ACTION_WIDGET_RECEIVER2) ||
                intent.getAction().equals(ACTION_WIDGET_RECEIVER3) || intent.getAction().equals(ACTION_WIDGET_RECEIVER4) ||
                intent.getAction().equals(ACTION_WIDGET_RECEIVER5) || intent.getAction().equals(ACTION_WIDGET_RECEIVER6) ||
                intent.getAction().equals(ACTION_WIDGET_RELOAD_ALARM) 
                ) {             
            int appWidgetId = intent.getExtras().getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID);
            System.out.println("appWidgetId:" + appWidgetId + ", action:" + action);




        }


        super.onReceive(context, intent);
    }
}
int[] allids = AppWidgetManager
.getInstance(Context)
.getAppWidgetIds(new ComponentName(Context, YourAppWidgetProvider.class);