1. Raidri, 29.03.2010 #1
    Raidri

    Raidri Threadstarter Android-Hilfe.de Mitglied

    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

    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

    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

    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

    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

    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.