2016-04-28 11 views
-1
nicht sichtbar ist

Ich möchte, dass meine btnAppShare-Schaltfläche angeklickt wird, auch wenn die Schaltfläche unsichtbar ist, habe ich diesen Code nach Schaltfläche 1 Klick Listener, der sichtbar ist .Basisch möchte ich, dass nach dem vollständigen Ausführen des setOnClickListener-Ereignisses von Button1 mein Button2 automatisch angeklickt wird und seinen setOnClickListener ausführt.Button.PerformClick() löst kein Click-Ereignis aus, wenn die Schaltfläche in Android

btnAppShare = (Button) findViewById(R.id.btnAppShare); 
    btnAppShare.setVisibility(View.INVISIBLE); 
    btnAppShare.performClick(); 
    btnAppShare.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View arg0) { 

      if (TextUtils.isEmpty(regId)) { 
       Toast.makeText(getApplicationContext(), "RegId is empty!", 
         Toast.LENGTH_LONG).show(); 
      } else { 
       Intent i = new Intent(getApplicationContext(), 
         MainActivity.class); 
       i.putExtra("regId", regId); 

       startActivity(i); 
       finish(); 

      } 
     } 
    }); 
+1

Und es ist die richtige Verhalten für 'Button # Perform()' – 3mpty

+0

@ 3mpty Dann gibt es eine Arbeit um setOnClickListener unsichtbaren Knopf zum Ausführen dieser Methode – SwagDevelopers

+3

Setzen Sie alles in 'onClick()' in einem anderen Verfahren und rufen aus 'onClick()', und wo immer du 'performClick()' aufrufen willst. –

Antwort

0

Sie können nicht etwas klicken, die nicht sichtbar ist, aber was kann man tun, ist, dass die Schaltfläche Hintergrund transparent machen mit diesem Attribut in seiner xml

android:background="@android:color/transparent" 

auf diese Weise Button sind nicht sichtbar, aber angeklickt werden.

Hope it

+0

Ich wollte nur darauf hinweisen, dass Sie auch die Textfarbe ändern müssten. Dies scheint chaotisch, weil der Benutzer immer noch auf den Knopf klicken könnte, während das, was er will, ein Knopf funktioniert X, während der andere Funktionen Y dann X –

+0

@ Jace hast du einen Punkt, aber ich habe es nicht abgedeckt, wenn hes Einstellung der Knopf ist schon unsichtbar, dann bedeutet es, dass die Knöpfe keinen Text für den Benutzer bekommen haben, der Benutzer liest schon nichts vom Knopf, so dass der Knopf sowieso keinen Text haben sollte – Max

5

Verwendung hilft View#callOnClick():

Button b = (Button)findViewById(R.id.button); 
//set here listener 
b.callOnClick(); 

Im Gegensatz zu performClick() es nennt OnClickListener Methode direkt, ohne Sachen Ansicht bezogen. Button muss Zuhörer haben, bevor Sie Click-Aktion aufrufen!

+0

.. Vielen Dank ... Es hat funktioniert :) – SwagDevelopers

1

Machen Sie eine Methode und rufen Sie nach der Einstellung der Schaltfläche invisble, dann in der onClick Methode des Listeners, rufen Sie die gleiche Methode.

btnAppShare = (Button) findViewById(R.id.btnAppShare); 
btnAppShare.setVisibility(View.INVISIBLE); 
myMethod(); 
btnAppShare.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View arg0) 
     myMethod(); 
    } 
}); 

public void myMethod() 
{ 
    if (TextUtils.isEmpty(regId)) { 
     Toast.makeText(getApplicationContext(), "RegId is empty!", 
       Toast.LENGTH_LONG).show(); 
    } else { 
     Intent i = new Intent(getApplicationContext(), 
       MainActivity.class); 
     i.putExtra("regId", regId); 

     startActivity(i); 
     finish(); 
    } 
}