Autore Topic: Popuo crash quando si apre la tastiera  (Letto 743 volte)

Offline joaquin

  • Nuovo arrivato
  • *
  • Post: 14
  • Respect: 0
    • Mostra profilo
Popuo crash quando si apre la tastiera
« il: 17 Giugno 2011, 09:04:09 CEST »
0
Ho una popup, che contiene un'EditText, se nella EditText c'è del testo ed io tento di modificarlo cliccando appunto sulla Edit per far apparire la tastiera l'applicazione crash, e sembra che non sia nessun eccezione creata dal mio codice, ma sia un errore di sistema, qualcuno sa come risolvere allego il log dell'eccezione.

06-16 17:03:20.402: ERROR/AndroidRuntime(22909): FATAL EXCEPTION: main
06-16 17:03:20.402: ERROR/AndroidRuntime(22909): android.view.WindowManager$BadTokenException: Unable to add window -- token android.view.ViewRoot$W@481bfb10 is not valid; is your activity running?
06-16 17:03:20.402: ERROR/AndroidRuntime(22909):     at android.view.ViewRoot.setView(ViewRoot.java:505)
06-16 17:03:20.402: ERROR/AndroidRuntime(22909):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:200)
06-16 17:03:20.402: ERROR/AndroidRuntime(22909):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:114)
06-16 17:03:20.402: ERROR/AndroidRuntime(22909):     at android.view.Window$LocalWindowManager.addView(Window.java:424)
06-16 17:03:20.402: ERROR/AndroidRuntime(22909):     at android.widget.PopupWindow.invokePopup(PopupWindow.java:828)
06-16 17:03:20.402: ERROR/AndroidRuntime(22909):     at android.widget.PopupWindow.showAtLocation(PopupWindow.java:688)
06-16 17:03:20.402: ERROR/AndroidRuntime(22909):     at android.widget.CursorHandle.showCursorHandle(CursorHandle.java:311)
06-16 17:03:20.402: ERROR/AndroidRuntime(22909):     at android.widget.CursorHandle$CheckCursorHandle$1.run(CursorHandle.java:707)
06-16 17:03:20.402: ERROR/AndroidRuntime(22909):     at android.os.Handler.handleCallback(Handler.java:587)
06-16 17:03:20.402: ERROR/AndroidRuntime(22909):     at android.os.Handler.dispatchMessage(Handler.java:92)
06-16 17:03:20.402: ERROR/AndroidRuntime(22909):     at android.os.Looper.loop(Looper.java:123)
06-16 17:03:20.402: ERROR/AndroidRuntime(22909):     at android.app.ActivityThread.main(ActivityThread.java:4627)
06-16 17:03:20.402: ERROR/AndroidRuntime(22909):     at java.lang.reflect.Method.invokeNative(Native Method)
06-16 17:03:20.402: ERROR/AndroidRuntime(22909):     at java.lang.reflect.Method.invoke(Method.java:521)
06-16 17:03:20.402: ERROR/AndroidRuntime(22909):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:871)
06-16 17:03:20.402: ERROR/AndroidRuntime(22909):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:629)
06-16 17:03:20.402: ERROR/AndroidRuntime(22909):     at dalvik.system.NativeStart.main(Native Method)

Offline denper

  • Utente normale
  • ***
  • Post: 290
  • Respect: +60
    • Mostra profilo
    • Anddenper
  • Dispositivo Android:
    Moto G
  • Play Store ID:
    denper
  • Sistema operativo:
    Window 7, Windows XP
Re:Popuo crash quando si apre la tastiera
« Risposta #1 il: 17 Giugno 2011, 09:10:32 CEST »
0
Ciao,
potresti postare anche il codice?
Tutti sanno che una cosa è impossibile da realizzare, finché arriva uno sprovveduto che non lo sa e la inventa. [A.Einstein]

Proteggi la tua privacy! Utilizza GhostPhone! https://play.google.com/store/apps/details?id=com.denper.gp
Giochi a Winforlife e Superenalotto e sei stanco di controllare le tue schedine manualmente? Prova Checkwin: https://play.google.com/store/apps/details?id=com.denper.checkwintrial

Offline joaquin

  • Nuovo arrivato
  • *
  • Post: 14
  • Respect: 0
    • Mostra profilo
Re:Popuo crash quando si apre la tastiera
« Risposta #2 il: 17 Giugno 2011, 09:15:02 CEST »
0
Codice (Java): [Seleziona]
rootNewBookMarkersView = new LinearLayout(ReaderActivity.this);
                        rootNewBookMarkersView.setBackgroundColor(Color.GRAY);
                        rootNewBookMarkersView.setOrientation(LinearLayout.VERTICAL);

                        rootNewBookMarkersView.setBackgroundColor(Color.BLACK);

                        TextView tv = new TextView(ReaderActivity.this);
                        synchronized (pdfFile) {
                                tv.setText("Pagina:" + this.pdfFile.pageNum);
                        }
                        tv.setTextSize(16);
                        tv.setTextColor(Color.WHITE);

                        LinearLayout.LayoutParams tvParams = new LinearLayout.LayoutParams(
                                        LinearLayout.LayoutParams.WRAP_CONTENT,
                                        LinearLayout.LayoutParams.WRAP_CONTENT);
                        tvParams.gravity = Gravity.CENTER;
                        rootNewBookMarkersView.addView(tv, tvParams);

                        final EditText et = new EditText(ReaderActivity.this);
                        et.setWidth((int) UtilityMeasures.dipPixel(
                                        this.getApplicationContext(), 260));
                        et.setHeight((int) UtilityMeasures.dipPixel(
                                        this.getApplicationContext(), 160));
                        et.setMaxLines(6);
                        et.setSingleLine(false);

                        // controllo se la pagina ha già un segnalibri
                        synchronized (pdfFile) {
                                segnalibro = gb.getSegnalibroPagina(pdfFile.pageNum, idLibro);
                                if (segnalibro != null)
                                        et.setText(segnalibro.getMemo());
                        }

                        LinearLayout.LayoutParams etParams = new LinearLayout.LayoutParams(
                                        LinearLayout.LayoutParams.WRAP_CONTENT,
                                        LinearLayout.LayoutParams.WRAP_CONTENT);
                        etParams.leftMargin = (int) (5 * getResources().getDisplayMetrics().density);
                        etParams.topMargin = (int) (5 * getResources().getDisplayMetrics().density);
                        etParams.rightMargin = (int) (5 * getResources()
                                        .getDisplayMetrics().density);
                        etParams.bottomMargin = (int) (5 * getResources()
                                        .getDisplayMetrics().density);
                        etParams.gravity = Gravity.CENTER_HORIZONTAL;
                        rootNewBookMarkersView.addView(et, etParams);

                        ImageButton addButton = new ImageButton(ReaderActivity.this);
                        addButton.setImageResource(R.drawable.bookmarkon);
                        addButton.setOnClickListener(new OnClickListener() {

                                @Override
                                public void onClick(View v) {

                                        String message = "";

                                        if (segnalibro != null) {
                                                if (gb.updateSegnalibro(segnalibro) != null)
                                                        message = "Sgnalibro inserito";
                                                else
                                                        message = "Sgnalibro non inserito";
                                        } else {
                                                Segnalibro s = new Segnalibro();
                                                s.setIdLibro(ReaderActivity.this.idLibro);
                                                s.setMemo(et.getEditableText().toString());

                                                synchronized (ReaderActivity.this.pdfFile) {
                                                        s.setPagina(ReaderActivity.this.pdfFile.pageNum);
                                                }

                                                if (gb.insertSegnaLibro(s) != null)
                                                        message = "Sgnalibro inserito";
                                                else
                                                        message = "Sgnalibro non inserito";
                                        }

                                        if (tpNewBookMarks != null)
                                                tpNewBookMarks.dismiss();
                                        alertDialogShow("Sgnalibro non inserito");
                                }
                        });

                        Display display = getWindowManager().getDefaultDisplay();
                        int dimensioneRelativa = (60 * display.getHeight() / 768);

                        LinearLayout.LayoutParams addParams = new LinearLayout.LayoutParams(
                                        dimensioneRelativa, dimensioneRelativa);
                        addParams.leftMargin = (int) (5 * getResources()
                                        .getDisplayMetrics().density);
                        addParams.topMargin = (int) (5 * getResources().getDisplayMetrics().density);
                        addParams.rightMargin = (int) (5 * getResources()
                                        .getDisplayMetrics().density);
                        addParams.bottomMargin = (int) (5 * getResources()
                                        .getDisplayMetrics().density);
                        addParams.gravity = Gravity.RIGHT;

                        addButton.setPadding(10, 10, 10, 10);
                        addButton.setScaleType(ImageView.ScaleType.CENTER_INSIDE);

                        rootNewBookMarkersView.addView(addButton, addParams);

                        int popupW = (int) ((250 * getResources().getDisplayMetrics().density) + 0.5f);
                        int popupH = (int) ((280 * getResources().getDisplayMetrics().density) + 0.5f);

                        tpNewBookMarks = new TablioPopUp(rootNewBookMarkersView, popupW,
                                        popupH, true);
                        tpNewBookMarks.showAtLocation((View) bookmarkonButton.getParent(),
                                        Gravity.CENTER,
                                        (int) ((bookmarkonButton.getLeft() + 5) * getResources()
                                                        .getDisplayMetrics().density), 50);

                        tpNewBookMarks.update();

Offline denper

  • Utente normale
  • ***
  • Post: 290
  • Respect: +60
    • Mostra profilo
    • Anddenper
  • Dispositivo Android:
    Moto G
  • Play Store ID:
    denper
  • Sistema operativo:
    Window 7, Windows XP
Re:Popuo crash quando si apre la tastiera
« Risposta #3 il: 17 Giugno 2011, 09:23:43 CEST »
0
Per caso hai già visto questo post? Il problema sembra simile al tuo...
Tutti sanno che una cosa è impossibile da realizzare, finché arriva uno sprovveduto che non lo sa e la inventa. [A.Einstein]

Proteggi la tua privacy! Utilizza GhostPhone! https://play.google.com/store/apps/details?id=com.denper.gp
Giochi a Winforlife e Superenalotto e sei stanco di controllare le tue schedine manualmente? Prova Checkwin: https://play.google.com/store/apps/details?id=com.denper.checkwintrial

Offline joaquin

  • Nuovo arrivato
  • *
  • Post: 14
  • Respect: 0
    • Mostra profilo
Re:Popuo crash quando si apre la tastiera
« Risposta #4 il: 17 Giugno 2011, 11:24:48 CEST »
0
Non va nemmeno con queste guida, ho addirittura replicato le soluzioni che sono postate nel post indicato ma nemmeno quelle funzionano.

Offline denper

  • Utente normale
  • ***
  • Post: 290
  • Respect: +60
    • Mostra profilo
    • Anddenper
  • Dispositivo Android:
    Moto G
  • Play Store ID:
    denper
  • Sistema operativo:
    Window 7, Windows XP
Re:Popuo crash quando si apre la tastiera
« Risposta #5 il: 17 Giugno 2011, 11:34:17 CEST »
0
Generalmente l'errore
Codice: [Seleziona]
Unable to add window -- token android.view.ViewRoot$xxxxx; is your activity running?è abbastanza generico. A me per esempio si verificava quando tentavo di visualizzare una popup già attiva oppure quando l'activity stava per essere chiusa. Di conseguenza prova a rivisionare il codice per vedere se c'è qualche 'giro' strano. Se vuoi mandarmi il codice posso provare a darti una mano.
Tutti sanno che una cosa è impossibile da realizzare, finché arriva uno sprovveduto che non lo sa e la inventa. [A.Einstein]

Proteggi la tua privacy! Utilizza GhostPhone! https://play.google.com/store/apps/details?id=com.denper.gp
Giochi a Winforlife e Superenalotto e sei stanco di controllare le tue schedine manualmente? Prova Checkwin: https://play.google.com/store/apps/details?id=com.denper.checkwintrial

Offline joaquin

  • Nuovo arrivato
  • *
  • Post: 14
  • Respect: 0
    • Mostra profilo
Re:Popuo crash quando si apre la tastiera
« Risposta #6 il: 17 Giugno 2011, 11:46:46 CEST »
0
Generalmente l'errore
Codice: [Seleziona]
Unable to add window -- token android.view.ViewRoot$xxxxx; is your activity running?è abbastanza generico. A me per esempio si verificava quando tentavo di visualizzare una popup già attiva oppure quando l'activity stava per essere chiusa. Di conseguenza prova a rivisionare il codice per vedere se c'è qualche 'giro' strano. Se vuoi mandarmi il codice posso provare a darti una mano.

Anche io credo che il popup ci azzecchi pochi.

Ora ti spiego quando succede:

Nel Popup c'è una EditText se clicco sull'EditText per far apparire la tastiera tutto ok, quindi scrivo qualcosa (ma posso anche non scrivere null), poi premo il tasto back e magari riclicco sulla Edit a quel punto crash.

Devo gestire magari il tasto back nella Popup, perchè credo che il tasto back tenta è intercettato dall'activity che tenta di chiudersi e quindi il tutto crash!!!

Offline denper

  • Utente normale
  • ***
  • Post: 290
  • Respect: +60
    • Mostra profilo
    • Anddenper
  • Dispositivo Android:
    Moto G
  • Play Store ID:
    denper
  • Sistema operativo:
    Window 7, Windows XP
Re:Popuo crash quando si apre la tastiera
« Risposta #7 il: 17 Giugno 2011, 11:54:13 CEST »
0
Potresti provare nel tasto back a verificare se la popup è aperta ed eventualmente fare il dismiss. In ogni caso prova a vedere se questo link può esserti utile.
Tutti sanno che una cosa è impossibile da realizzare, finché arriva uno sprovveduto che non lo sa e la inventa. [A.Einstein]

Proteggi la tua privacy! Utilizza GhostPhone! https://play.google.com/store/apps/details?id=com.denper.gp
Giochi a Winforlife e Superenalotto e sei stanco di controllare le tue schedine manualmente? Prova Checkwin: https://play.google.com/store/apps/details?id=com.denper.checkwintrial

Offline joaquin

  • Nuovo arrivato
  • *
  • Post: 14
  • Respect: 0
    • Mostra profilo
Re:Popuo crash quando si apre la tastiera
« Risposta #8 il: 17 Giugno 2011, 13:09:43 CEST »
0
Aggiungo che va in crash anche se utilizzo il tastino appostio della tastiera e poi ritorno sulla edittext.