как открыть пользовательский диалог при срабатывании будильника

моему приложению нужно установить несколько будильников, я бы хотел показывать настраиваемый диалог при срабатывании будильника.

мой класс приемника

    package com.example.memopad;

import java.util.zip.Inflater;








import android.app.Dialog;
import android.app.FragmentManager;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;



public class AlarmReceiver extends BroadcastReceiver{


     String dato;





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

             dato=intent.getStringExtra("nome");

            lanciaDialog();

            //Toast toast =Toast.makeText(context, "Oggi e' il compleanno di  " + dato , Toast.LENGTH_SHORT);
            // toast.show();





}
    public void lanciaDialog(){

        DialogFragment dialog = new CustomDialogCumple();
        dialog.show(getSupportFragmentManager(), "missiles");

    }



    }

мой класс CustomDialogCumple

package com.example.memopad;

import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.view.LayoutInflater;

public class CustomDialogCumple extends DialogFragment {
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        // Use the Builder class for convenient dialog construction
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        LayoutInflater inflater = getActivity().getLayoutInflater();
        builder.setView(inflater.inflate(R.layout.customdialogcumple, null));
        builder.setMessage(R.string.cumple)
               /*.setPositiveButton(R.string.fire, new DialogInterface.OnClickListener() {
                   public void onClick(DialogInterface dialog, int id) {

                   }
               })*/
               .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
                   public void onClick(DialogInterface dialog, int id) {
                       // User cancelled the dialog
                   }
               });
        // Create the AlertDialog object and return it
        return builder.create();
    }
}

у меня проблема в dialog.show(getSupportFragmentManager(), "ракеты");

я использовал Dialogfragment в соответствии с руководством Google, есть ли у вас какие-либо подсказки для меня? заранее спасибо


person Vincenzo Carriero    schedule 12.04.2015    source источник
comment
Так в чем проблема? Это ошибка времени выполнения/ошибка времени компиляции? логи есть?   -  person Karan    schedule 12.04.2015


Ответы (1)


То, что вы пытаетесь сделать, это отобразить диалоговое окно из BroadcastReceiver - это не разрешено в Android. Вы можете показать диалог только из действия. Что вы можете сделать, так это заставить BroadcastReceiver запустить действие, а затем показать диалоговое окно. Дополнительную информацию можно прочитать в этом блоге.

Как вы можете видеть, он либо доставляет уведомление, если активность в настоящее время не видна, либо делает что-то уместное, если активность есть (что в вашем случае будет отображать диалог).

person ucsunil    schedule 12.04.2015
comment
Я делаю что-то подобное, но всегда нужно, чтобы диалоговое окно появлялось, поэтому я открываю прозрачное полноэкранное действие без содержимого. Затем это пустое действие показывает диалоговое окно. - person cYrixmorten; 12.04.2015
comment
Вы должны иметь какое-то действие, чтобы показать диалог. Иначе нельзя. Этот шаблон проектирования приводит к сценарию действия или уведомления, где, если у вас еще нет запущенного действия, вы создаете уведомление, которое можно сделать из широковещательного приемника. - person ucsunil; 12.04.2015