2013-08-01 11 views
8

Kann ich ein Dialogfeld ohne negative oder positive Schaltflächen erstellen. Das zerstört sich nach bestimmten Aktionen?Android Dialogfeld ohne Schaltflächen

+1

Erstellen Sie Ihre eigenen benutzerdefinierten Dialog und rufen Sie 'abweisen()' Methode, wenn Sie möchten. Referenz: http: //android-developers.blogspot.in/2012/05/using-dialogfragments.html – dakshbhatt21

+0

Sie können versuchen, benutzerdefinierte Dialogfeld von [hier] (http://stackoverflow.com/questions/17994238/android-dialog- box-without-buttons/17994633 # 17994633) –

Antwort

12

Sie können dies sehr einfach tun.

AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context); 

// set title 
alertDialogBuilder.setTitle("Your Title"); 

// set dialog message 
alertDialogBuilder.setMessage("Message here!").setCancelable(false); 

// create alert dialog 
AlertDialog alertDialog = alertDialogBuilder.create(); 

// show it 
alertDialog.show(); 

// After some action 
alertDialog.dismiss(); 

Wenn Sie einen Verweis auf die AlertDialog woanders haben, können Sie immer noch alertDialog.dismiss() nennen. Dies schließt den Dialog.

+1

08-01 14: 45: 20.422: E/AndroidRuntime (10831): java.lang.NullPointerException Es gibt diesen Fehler – user2401745

+1

Sie müssen einige Code für mich veröffentlichen, um zu sehen, was los ist – crocboy

+0

Mindestens auf neueren Versionen von Android führt dies zu einem Dialog mit einer OK-Schaltfläche. – nasch

2

Sie können alertDialog .dismiss() nach jeder Aktion aufrufen.

+0

, die das Programm caches – user2401745

+0

zu global veriable für alertDialog definieren und prüfen, ob (alertDialog! = null) – KEYSAN

+0

tatsächlich meine Antwort ist die gleiche # Crocboys Antwort. – KEYSAN

0

Dialog zeigen: -

ProgressDialog pd = ProgressDialog.show(context,"TITLE","MSG"); 

pd.dismiss(); 
0

Implementierung eines Timers zu entlassen und setzte es die DialogBox nach wenigen Sekunden zu entlassen.

1

können Sie versuchen, Dialogfeld-Design ur auf Dialog und verwenden Sie es als u sie

final Dialog dialog= new Dialog(context); 
dialog.setContentView(R.layout.pre_confirmation_dailog); 
dialog.setTitle("Details..."); 
dialog.show(); 
0

verwenden möchten, können Sie benutzerdefinierte Dialog versuchen, wie Sie

Dialog dialog_help = new Dialog(this); 
dialog_help.setContentView(R.layout.title_multi_selectitems_dialog); 
EditText et_1 = (EditText) dialog_help.findViewById(R.id.et_help_1); 
dialog_help.setCancelable(true); 
dialog_help.setTitle(" Help "); 
dialog_help.setCanceledOnTouchOutside(true); 
dialog_help.show(); 
dialog_help.getWindow().setGravity(Gravity.CENTER); 
dialog_help.getWindow().setLayout(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT); 
4

Wirklich wie hängt davon ab, was „-Aktion "durchgeführt wird:


AlertDialog.Builder dialog_detect= new AlertDialog.Builder(MainActivity.this); 
dialog.setTitle("Detecting....."); 
dialog.setMessage("Please Wait"); 
dialog.show(); 

timeConsumingDetectMethod(); 

dialog.dismiss(); 

Auf diese Weise erhalten Sie eine eingefrorene UI, bis timeConsumingDetectMethod() beendet ist.


Die folgende Methode führt jedoch die Aktion im Hintergrund aus, während ein sehr reaktionsschneller Dialog angezeigt wird. Beendet außerdem die Aktion, wenn der Dialog abgebrochen wird.

AsyncTask<Void,Void,Void> task = new AsyncTask<Void, Void, Void>() { 

     private AlertDialog dialog; 

     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
      dialog= new AlertDialog.Builder(MainActivity.this); 
      dialog.setTitle("Detecting....."); 
      dialog.setMessage("Please Wait"); 

      dialog.setOnCancelListener(new DialogInterface.OnCancelListener() { 
       @Override 
       public void onCancel(DialogInterface dialogInterface) { 
        cancel(true); 
       } 
      }); 

      dialog.show(); 
     } 

     @Override 
     protected Void doInBackground(Void... voids) { 
      timeConsumingDetectMethod(); 
      return null; 
     } 

     @Override 
     protected void onPostExecute(Void aVoid) { 
      super.onPostExecute(aVoid); 
      dialog.dismiss(); 
     } 

    }.execute(); 
0

Korrekter Code von crocboy's answer ist dies:

AlertDialog.Builder builder = new AlertDialog.Builder(context); 

// set title 
builder.setTitle("Your Title"); 

// set dialog message 
builder.setMessage("Message here!").setCancelable(false); 

// create alert dialog 
AlertDialog alertDialog = builder.create(); 

// show it 
alertDialog.show(); 

// After some action 
alertDialog.dismiss(); 
2

Sie auch crocboy den Code wie folgt schreiben:

AlertDialog alertDialog = new AlertDialog.Builder(context)  
    .setTitle("Your Title") 
    .setMessage("Message here!") 
    .setCancelable(false) 
    .create(); 

alertDialog.show(); 

// After some action 
alertDialog.dismiss(); 

Es ist genau das gleiche, es ist nur kompakter.

Verwandte Themen