Autore Topic: Richiamare onclick senza premere il button  (Letto 252 volte)

Offline astro87

  • Nuovo arrivato
  • *
  • Post: 21
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    motorola moto g
  • Sistema operativo:
    windows 7
Richiamare onclick senza premere il button
« il: 15 Ottobre 2014, 09:31:37 CEST »
0
Salve sono alle prese con un problema sicuramente semplice ma che mi sta creando diversi grattacapi.
In pratica vorrei richiamare una funzione associata alla pressione di un button , ma senza premere il button.
Codice (Java): [Seleziona]
 <Button
            android:id="@+id/button3"
            android:layout_width="match_parent"
            android:layout_height="22sp"
            android:layout_weight="0.3"
            android:background="#00FFFFFF"
            android:onClick="replacefragment_dimora"
            android:shadowRadius="5"
            android:text="@string/dimora"
         
            android:textColor="@color/white"
            android:textSize="15sp" />

e il file java dove è implementata la funzione è il seguente:
Codice (Java): [Seleziona]
public void replacefragment_dimora(View v){
                Fragment fragment = new Gridview_Messa_Dimora();
                // Insert the fragment by replacing any existing fragment
                FragmentManager fragmentManager = getSupportFragmentManager();
                fragmentManager.beginTransaction()
                               .replace(R.id.conteiner2, fragment,"dimora")
                               .commit();
                findViewById(R.id.button2).setBackgroundColor(Color.TRANSPARENT);
                findViewById(R.id.button3).setBackgroundColor(color.white_trasparent_bg);
                findViewById(R.id.button4).setBackgroundColor(Color.TRANSPARENT);
               
               
        }

il problema sorge sul parametro view. Come faccio a richiamare tale funzione senza premere il button? ovvero da dove posso prendere il parametro View e che significato ha?

Grazie

Offline alfy91

  • Nuovo arrivato
  • *
  • Post: 28
  • Respect: +2
    • @piscitelli91
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Sistema operativo:
    Windows 8
Re:Richiamare onclick senza premere il button
« Risposta #1 il: 15 Ottobre 2014, 09:52:00 CEST »
0
Per richiamare quella funzione puoi fare così:

Codice (Java): [Seleziona]
findViewById(R.id.button3).performClick();
Il parametro View è riferito all'oggetto cliccato. In quel caso è il button.

Ciao!

Offline astro87

  • Nuovo arrivato
  • *
  • Post: 21
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    motorola moto g
  • Sistema operativo:
    windows 7
Re:Richiamare onclick senza premere il button
« Risposta #2 il: 15 Ottobre 2014, 10:05:07 CEST »
0
La funzione findViewById(R.id.button3).performClick(); restituisce un booleano.
Come faccio ad usare per esempio la funzione setBackgroundColor(color.white_trasparent_bg); sul button3??

Post unito: 15 Ottobre 2014, 10:20:01 CEST
Se inserisco findViewById(R.id.button2).performClick(); alla fine dell'oncreate() dopo che sono stati creati tutti i fragment ricevo un nullpointer .....come mai???
« Ultima modifica: 15 Ottobre 2014, 10:20:01 CEST da astro87, Reason: Merged DoublePost »

Offline teskio

  • Moderatore globale
  • Utente normale
  • *****
  • Post: 387
  • Respect: +118
    • Github
    • Google+
    • Mostra profilo
    • Skullab
  • Dispositivo Android:
    Cubot GT99 / SurfTab Ventos 10.1
  • Play Store ID:
    Skullab Software
  • Sistema operativo:
    windows 7 / ubuntu 12.04
Re:Richiamare onclick senza premere il button
« Risposta #3 il: 15 Ottobre 2014, 17:56:47 CEST »
0
Ricordo che leggere le REFERENCE di Android è sempre un ottimo punto di partenza, e che per qualsiasi Exception generata, è obbligatorio il Logcat !

Detto questo, il metodo performClick() richiama l'OnClickListener della View, se questo è associato, ed in questo caso ritorna un valore booleano true, altrimenti ritorna false.
Qui le refence ufficiali : performClick()

Tornando al tuo problema, puoi provare ad implementare un listener da codice invece che farlo creare da Android attraverso il layout, oppure, invece che richiamare performClick() nell'onCreate, spostarlo nell'onStart, in modo da avere la certezza che il layout sia totalmente caricato.