Я сделал очень простой виджет, который при нажатии запускает действие, но по какой-то причине, когда я нажимаю назад, действие закрывается, и я вижу домашний экран, но он полностью не отвечает, пока я не нажму снова.Я понятия не имею, почему это происходит, и я предполагаю, что, возможно, это виджет-провайдер, который также открыт за действием в любом случае. Вот код, который я использую для любых идей, поэтому мне нужно дважды нажать назад, чтобы выйти из действия, запущенного моим виджетом.будет принята с благодарностью
Виджет также находится в отдельном пакете, если это имеет значение
Манифест
<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();
}
}