【问题标题】:Android widget requires back twiceAndroid 小部件需要返回两次
【发布时间】:2011-06-16 17:52:36
【问题描述】:

我制作了一个非常简单的小部件,当按下时会启动一个活动,但由于某种原因,当我按下回时,活动关闭并且我看到主屏幕,但在我再次按下之前它完全没有响应。我不知道为什么会这样将不胜感激

如果重要的话,小部件也会放在单独的包中

清单

<receiver android:name="com.gflam.widget.WidgetProvider" >
        <intent-filter>
        <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
    </intent-filter>
    <meta-data android:name="android.appwidget.provider"
           android:resource="@xml/widget" />
    </receiver>
<activity android:name="com.gflam.widget.Dialog" android:launchMode="singleInstance" android:noHistory="true" ></activity>

WidgetProvider

public class WidgetProvider extends AppWidgetProvider {

    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
        final int N = appWidgetIds.length;

        for (int i=0; i<N; i++) {
            int appWidgetId = appWidgetIds[i];

            Intent intent = new Intent(context, com.gflam.widget.Dialog.class);
            PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);

            RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget);
            views.setOnClickPendingIntent(R.id.widget, pendingIntent);

            appWidgetManager.updateAppWidget(appWidgetId, views);
        }
    }
}

活动启动

public class Dialog extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        SharedPreferences settings = getSharedPreferences(PREFS_DEVICE, 0);

        final CharSequence[] items = {"1", "2", "3", "4", "5"};
        AlertDialog.Builder builder = new AlertDialog.Builder(Dialog.this);
        builder.setTitle("What would you like to do?");
        builder.setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int item) {
            }
            });
            builder.setPositiveButton("Okay", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                    SparseBooleanArray CheCked =((AlertDialog)dialog).getListView().getCheckedItemPositions();
                    if(CheCked.get(0)){

                    }
                    if(CheCked.get(1)){

                    }
                    if(CheCked.get(2)){

                    }
                    if(CheCked.get(3)){

                    }
                    if(CheCked.get(4)){

                    }
                }
            }).setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                    dialog.dismiss();
                }
        }).show();
    }
}

【问题讨论】:

  • 有人有什么想法吗?每次我切换我的 rom 时都会发生这种情况,它仍然会发生,所以它必须与代码有关,但不明白为什么我必须按下两次

标签: android android-activity widget provider back


【解决方案1】:
    Dialog dialog = new Dialog(this);
    dialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
        @Override
        public void onCancel(DialogInterface dialog) {
            YourActivity.this.finish();
        }
    });

Override dialog onBackPressed()?

【讨论】:

    【解决方案2】:

    弄清楚这很有意义,第一个后退会杀死对话框,然后我需要第二个后退才能杀死活动,所以我想我需要重写它以扩展对话框,对此问题并不抱歉,但确实弄清楚了什么最终错了

    【讨论】:

      猜你喜欢
      • 2019-10-26
      • 2013-10-20
      • 2019-11-20
      • 2015-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-13
      • 2012-12-01
      相关资源
      最近更新 更多