1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

AlertDialog.show() erzeugt einen Fehler!

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von Raidri, 29.03.2010.

  1. Raidri, 29.03.2010 #1
    Raidri

    Raidri Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    71
    Erhaltene Danke:
    1
    Registriert seit:
    27.03.2010
    Hallo,

    Sobald er bei show ankommt, bricht er die app ab und ich weiss nicht wieso. Habe danach gegoogled aber nicht wirklich einen unterschied gefunden. Vllt könnt ihr mich ja helfen und sagen wo das Problem liegt.

    Hier mal meinen Code:
    Code:
    Button back = new Button(this);
                    back.setText("Ausloggen");
                    back.setHeight(20);
                    back.setOnClickListener(new OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            Dialog builder = new AlertDialog.Builder(getApplicationContext())
                                   .setMessage("Wirklich Ausloggen ?")
                                   .setTitle("Abmelden")
                                   .setCancelable(false)
                                   .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                                       public void onClick(DialogInterface dialog, int id) {
                                           Intent intent = new Intent(getApplicationContext(), Login.class);
                                           startActivity(intent);
                                       }
                                   })
                                   .setNegativeButton("No", new DialogInterface.OnClickListener() {
                                       public void onClick(DialogInterface dialog, int id) {
                                            dialog.cancel();
                                       }
                                   }).create();
                            builder.show();
                        }
                    });
    
    Danke
     
  2. swordi, 29.03.2010 #2
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    wäre hilfreich, wenn du postest, welcher fehler kommt ( eclipse -> debug )

    im normalfall arbeitet man mit den methoden createDialog und showDialog

    schau dir das mal an, erspart dir gleich ein paar probleme, wenn du es so machst.
     
  3. Raidri, 29.03.2010 #3
    Raidri

    Raidri Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    71
    Erhaltene Danke:
    1
    Registriert seit:
    27.03.2010
    Ok, habe es erstmal darauf umgeschrieben ;). Leider behebt es den Fehler nicht. Bevor ich den Log hier poste, schreibe ich mal meinen Gedanken auf, vllt könnte es ja daran liegen.
    Der Dialog wird in einer Activity aufgerufen die innerhalb eines Tabs liegt, könnte das Probleme machen ?

    Ansonsten hier mal den error log:
    Code:
    03-29 12:06:13.168: ERROR/AndroidRuntime(343): android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application
    
    Code:
    public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                
                setContentView(R.layout.tab);
                
                Bundle extras = getIntent().getExtras();
                
                if(extras != null){
                    MiteProjects get = new MiteProjects((Logindata)extras.get("LOGINDATA"));
                    
                    activeProject = get.getActivProjects();
                    archivedProject = get.getArchivedProjects();
                    Button back = new Button(this);
                    back.setText("Ausloggen");
                    back.setHeight(20);
                    back.setOnClickListener(new OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            showDialog(DIALOG_LOGOUT);
                        }
                    });
                    
                    view = (ListView)findViewById(R.id.listView);
                    view.addFooterView(back);
                    view.setAdapter(new ArrayAdapter<Project>(this, R.layout.list_item, activeProject));
                }       
            }
         
         protected Dialog onCreateDialog(int id){
             Dialog dialog;
             switch(id){
             case DIALOG_LOGOUT:
                 dialog = new AlertDialog.Builder(getApplicationContext())
                 .setCancelable(false)
                 .setMessage("Wirklich ausloggen ?")
                 .setTitle("Ausloggen ?")
                 .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                     public void onClick(DialogInterface dialog, int id) {
                     }
                 })
                 .setNegativeButton("No", new DialogInterface.OnClickListener() {
                     public void onClick(DialogInterface dialog, int id) {
                        dialog.cancel();
                     }
                 })
                 .create();
             break;
             default:
                 dialog = null;
             }
             
             return dialog;
         }
    
     
  4. Llyr, 12.04.2010 #4
    Llyr

    Llyr Junior Mitglied

    Beiträge:
    33
    Erhaltene Danke:
    7
    Registriert seit:
    23.02.2010
    Phone:
    HTC Desire
    hey, habe gerade genau das selbe problem, würde mich über hilfe freuen :)
    evtl hast du es ja auch gelöst Raidri?
     
  5. SeraphimSerapis, 13.04.2010 #5
    SeraphimSerapis

    SeraphimSerapis Android-Guru

    Beiträge:
    3,072
    Erhaltene Danke:
    1,138
    Registriert seit:
    27.02.2009
    Das Problem liegt daran, dass du für den Builder .show() aufrufst, statt einen AlertDialog selbst aufzurufen. Das ganze Sieht so aus:

    Code:
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setMessage("Are you sure you want to exit?")
           .setCancelable(false)
           .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
               public void onClick(DialogInterface dialog, int id) {
                    MyActivity.this.finish();
               }
           })
           .setNegativeButton("No", new DialogInterface.OnClickListener() {
               public void onClick(DialogInterface dialog, int id) {
                    dialog.cancel();
               }
           });
    AlertDialog alert = builder.create();
    alert.show();
     
  6. Mort, 13.04.2010 #6
    Mort

    Mort Android-Lexikon

    Beiträge:
    960
    Erhaltene Danke:
    262
    Registriert seit:
    16.11.2009
    Bei alten Android-Versionen gibt's teilweise auch Probleme mit dem Application-Context.
    Wenns auch auf 1.5 laufen soll, statt getApplicationContext() besser den der Activity (YourActivity.this) verwenden.
     

Diese Seite empfehlen