AlertDialog.show() erzeugt einen Fehler!

R

Raidri

Ambitioniertes Mitglied
1
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
 
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.
 
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;
     }
 
hey, habe gerade genau das selbe problem, würde mich über hilfe freuen :)
evtl hast du es ja auch gelöst Raidri?
 
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();
 
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.
 

Ähnliche Themen

L
Antworten
15
Aufrufe
909
jogimuc
J
D
Antworten
3
Aufrufe
457
jogimuc
J
M
Antworten
1
Aufrufe
1.035
wilco
W
Zurück
Oben Unten