Autore Topic: Aggiungere elementi al context menu di default di un EditText  (Letto 956 volte)

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +507
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Aggiungere elementi al context menu di default di un EditText
« il: 24 Dicembre 2010, 10:49:03 CET »
0
Sto cercando di "appendere" un elemento al menu contestuale di "default" di un EditText, per intenderci, quello che mostra il pulsante "Metodo di inserimento", "Incolla" e così via.

Codice (Java): [Seleziona]
@Override
public void onCreateContextMenu ( ContextMenu menu, View v, ContextMenuInfo menuInfo ) {

        super.onCreateContextMenu( menu, v, menuInfo );

        if ( v.getId() == R.id.messageText ) {
                menu.add( Menu.NONE, MENU_OPEN_TEMPLATES, Menu.NONE, getString( R.string.insert_template ) );
        }

}

Quello che mi aspetterei da questo codice è che chiamando il super popola la view con gli elementi di default e poi gli vado ad aggiungere il mio elemento. Ma purtroppo così non è. Con il codice sopra riportato vedo *solo* il mio item. Se tolgo la parte menu.add(...) viene visualizzato il menu std dell'EditText...

Qualche idea su come risolvere?

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Aggiungere elementi al context menu di default di un EditText
« Risposta #1 il: 24 Dicembre 2010, 11:33:19 CET »
0
qui a sto tipo funziona chiamando la super DOPO l'add (so che la super va chiamata prima, però)...
android - onCreateContextMenu() for EditText doesn't work on real device - Stack Overflow
al limite linkano questa soluzione:
android - How can I write my own context menu for copy & paste? - Stack Overflow

facci sapere poi!
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +507
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Aggiungere elementi al context menu di default di un EditText
« Risposta #2 il: 24 Dicembre 2010, 12:47:55 CET »
0
Avevo già visto quei link e ho anche provato diverse soluzioni.
Sembrerebbe proprio che facendo menu.add venga sovrascritto quello di deault però :(

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Aggiungere elementi al context menu di default di un EditText
« Risposta #3 il: 24 Dicembre 2010, 15:38:22 CET »
0
Avevo già visto quei link e ho anche provato diverse soluzioni.
Sembrerebbe proprio che facendo menu.add venga sovrascritto quello di deault però :(
hai provato a fare la super dopo il tuo add?
ps,:il forum sul galaxy tab e firefox funziona da dio,ancora piu comodo di tapatalk!
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +507
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Aggiungere elementi al context menu di default di un EditText
« Risposta #4 il: 24 Dicembre 2010, 16:00:23 CET »
0
Si alla fine ho risolto.

Come un pirla non mi ero accordo che il context menu "standard" (incolla, cambia tasteria, etc) dell'EditText viene fuori solo solo se fai un long-press mentre ha il focus.

Comunque per completezza ho ereditato la classe EditText andando a reimplementare il metodo in questo modo:

Codice (Java): [Seleziona]
        @Override
        protected void onCreateContextMenu ( ContextMenu menu ) {

                menu.clearHeader();
                menu.clear();
               
                menu.setHeaderTitle( R.string.select_template_dialog_title );
                menu.add( Menu.NONE, MENU_ADD_TEMPLATE, Menu.NONE, R.string.insert_template );
                super.onCreateContextMenu( menu );

        }

In questo modo viene mostrato tra le altre varie opzioni "standard" se l'EditText ha il focus oppure da solo se non ce l'ha.