2016-03-21 23 views
3

Ben OnClickListener arabirimini uygulayanSnackbar eylem GetView() Benim Faaliyet içinde

MainActivity extends AppCompatActivity implements View.OnClickListener

init Snackbar böyle:

snackbar = Snackbar.make(view, R.string.msg, Snackbar.LENGTH_LONG); 
snackbar.setAction(R.string.action_undo, this); 

ama hayata OnClickListener arayüzü yöntemiyle

üzerine işleyemez
@Override 
public void onClick(View v) { 
    // this not work! 
    // snackbar id is different from snackbar action id 
    if (v.getId() == snackbar.getView().getId()) { 

    } 
} 

Birisi eylem görünümünü nasıl alacağını biliyor nackbar?

+0

sen söyler misin bana bunun tam olarak ihtiyacı var mı? –

+0

Bunun tam ihtiyacı, güzel kod yapısıdır. Çok sayıda tıklanabilir görünüm bir yöntemle işlenir, yöntemde Giriş parametresi olarak View v var ve bu görünümün ID'si ile tıklama mantığımı ayırabilirim. Ama snackbar action.getView eksik() –

cevap

6

, Snackbar TextView'un kaynak kimliği

android.support.design.R.id.snackbar_text 

Ve Snackbar eylem görünümü kaynak kimliği Sorunuzu doğru anlamış varsa, almak istiyorum

android.support.design.R.id.snackbar_action 

olduğunu Snackbar eylem kaynağı kimliği. Yukarıda da belirtildiği gibi, kolayca bu alabilir ve onClick() yılında, hoşuna kullanabilirsiniz -

@Override 
public void onClick(View v) { 

    if (v.getId() == android.support.design.R.id.snackbar_action) { 

    } 
} 
+0

Tank, test ve çalışma;) chears! –

+0

teşekkürler Teşekkürler :) yardımcı olmaktan mutluluk duyuyorum :) – MilapTank

0

Bir aperatif çubuğunda eylem ayarlamak için bunu deneyebilirsiniz. Her Snackbar için

View.OnClickListener snackbarClickListener = new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

     } 
    }; 

snackbar = Snackbar.make(view, R.string.msg, Snackbar.LENGTH_LONG); 
snackbar.setAction(R.string.action_undo, snackbarClickListener); 
+0

Benim sorum nasıl aperatif için eylem eklemek için değil, bunu nasıl elde gerektiğini bilmek gerekir: snack.getAction(). GetView() –

+0

belgelere göre [http: // geliştirici. android.com/reference/android/support/design/widget/Snackbar.html] Snackbar sınıfında 'getAction' yöntemi yok. Daha fazlasını açıklayabilir misin? – brainbreaker

1
v.getId() 

daima (Rezerve) 'dir:

android.support.design.R.id.snackbar_action 

Doc