Kod kullanarak bir düğmeyi nasıl taklit edebilirim?


216

Android'de kodu kullanarak bir düğme tıklama etkinliğini nasıl tetikleyebilirim? Başka bir olay meydana geldiğinde programlı olarak düğmeyi tıklatmak istiyorum.

Karşılaştığım Aynı Sorun

public void onDateSelectedButtonClick(View v){
    /*Something  Alarm Management 
    http://www.java2s.com/Code/Android/Core-Class/Alarmdemo.htm
    copied code from this site*/
}

Düğme kodu:

<Button
    android:onClick="onDateSelectedButtonClick"
    android:text="Set notification for this date" />

Ama OnClickEvent olmadan OnLoadLayout bu işlevi çağırmak istiyorum


lütfen sorunu belirtir misiniz? Neden bunu istiyorsun? Yürütülecek bazı kodları tetiklemek ister misiniz?
Vladimir Ivanov

Evet, düğme tıklaması için yürütülecek kodu tetiklemek istiyorum.
sam

Yanıtlar:


445

daha iyi bir yol var.

View.performClick();

http://developer.android.com/reference/android/view/View.html#performClick ()

bu, tüm sorunlarınıza cevap vermelidir. her Görünüm, Düğme, Spinner vb. dahil olmak üzere bu işlevi devralır.

Sadece açıklığa kavuşturmak için, Görünüm statik bir performClick () yöntemine sahip değildir. Bir View örneğinde performClick () öğesini çağırmalısınız. Örneğin, sadece

View.performClick();

Bunun yerine, şöyle bir şey yapın:

View myView = findViewById(R.id.myview);
myView.performClick();

2
Ancak Android için Görüntüle geri düğmesi nedir?
Peter Ajtai

4
telefonunuzdaki geri düğmesi için "Görünüm" yoktur. bu tuşlara basmak için tuş dinleyicileri kullanmanız gerekir. bu tamamen farklı bir mesele.
moonlightcheese

3
@moon - Kullanıcıların yorumlarınızdan haberdar edilmesini istiyorsanız, onlara "@" ile başlayın ve bildirimde bulunmak istediğiniz kullanıcının ilk birkaç harfi .... ile başlayın. değil)
Peter Ajtai

14
Bu cevapta gösterilen kod biraz kafa karıştırıcı. Sadece açıklığa kavuşturmak için, Görünüm statik bir performClick () yöntemine sahip değildir. Bir View örneğinde performClick () öğesini çağırmalısınız.
asukasz Wiklendt

3
sadece ne yaptığınızı bilmiyorsanız kafa karıştırıcı olur.
moonlightcheese

52

Sadece ay ışığının ne ifade ettiğini açıklığa kavuşturmak için: Android'de bir tuş tıklama olayını tetiklemek için aşağıdakileri sağlayın:

buttonName.performClick();

12

bu şekilde yapabilirsin

private Button btn;
btn = (Button)findViewById(R.id.button2);
btn.performClick();

7

Android'ler callOnClick()( API 15'e eklenmiştir ) bazen deneyimlerime göre daha iyi bir seçim olabilir performClick(). Bir kullanıcıda seçim sesleri etkinleştirilmişse, performClick()kullanıcının birbiri üzerine biraz katmanlı, birbirini rahatsız edebilecek iki sürekli seçim sesi duymasına neden olabilir. (Kullanıcının ilk düğme tıklaması için bir seçim sesi, daha sonra OnClickListenerkod aracılığıyla aradığınız diğer düğme için bir seçim sesi .)


7

Sadece bu basit kod satırını yazın: -

button.performClick();

Burada button, Button sınıfının referans değişkendir ve aşağıdaki gibi tanımlanır: -

private Button buttonToday ;
buttonToday = (Button) findViewById(R.id.buttonToday);

Bu kadar.


6

API15'ten başlayarak, callOnClick()ekli görünümü OnClickListener'ı doğrudan çağıran da kullanabilirsiniz . PerformClick () öğesinin aksine, bu yalnızca dinleyiciyi çağırır ve bir erişilebilirlik olayını bildirme gibi ilişkili tıklama eylemlerini gerçekleştirmez.


4

senderArgümanı kullanmıyorsanız , neden işlevi ayırmak için düğme işleyici uygulamasını yeniden düzenleyemezsiniz ve istediğiniz yerden (düğme işleyicisinden ve başka bir yerden) çağırırsınız.

Her neyse, daha iyi ve daha temiz bir tasarım - düğme işleyicisinde çağrılması gereken bir kod ve diğer bazı yerlerden kendi işlevlerine göre yeniden düzenlenmeyi hak ediyor. Ayrıca, UI işlemeyi uygulama mantık kodundan ayırmanıza yardımcı olacaktır. Ayrıca, yalnızca onDateSelectedButtonClick () işlevine değil, işleve güzel bir adınız olur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.