2015-04-12 160 views
0

我的應用需要設置多個報警 我想在報警觸發時顯示自定義對話框。如何在報警觸發時打開自定義對話框

我的接收機類是

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根據谷歌指南 你有什麼提示嗎? 在此先感謝

+0

那麼問題是什麼?它是運行時錯誤/編譯時錯誤嗎?有沒有日誌? – Kay

回答

1

你要做的是從一個BroadcastReceiver顯示一個對話框 - 這是不允許在Android中。您只能從活動中顯示對話框。你可以做的是讓BroadcastReceiver啓動一個Activity,然後顯示對話框。更多信息請參閱this blog

正如你所看到的,如果活動目前不可見,或者如果活動是(在你的情況下是顯示對話框),他會發送一個通知。

+1

我做了類似的事情,但總是需要出現一個對話框,所以我打開了一個沒有內容的透明的全屏活動。這個空白的活動然後顯示對話框。 – cYrixmorten

+0

你必須有某種活動來顯示對話框。否則不可能。這種設計模式會導致活動或通知場景,如果您沒有運行Activity,則會創建可從廣播接收器完成的通知。 – ucsunil

+0

非常感謝。我會按照你的提示。 –