2016-12-17 2 views
1

Это моя функция showDialog, которая получает вызов, когда кто-то нажимает на кнопку в действии.Как использовать bindknife's Bind() в диалоговом окне show dialog в android

private void showCouponCodeDialog() { 

    final Dialog dialog = new Dialog(this); 
    dialog.setContentView(R.layout.dialoge_apply_coupon); 
    dialog.setTitle(R.string.coupon_code); 

    final ProgressBar progressBar = (ProgressBar) dialog.findViewById(R.id.progressBar); 
    progressBar.setVisibility(View.GONE); 
    Button btnApplyCoupon = (Button) dialog.findViewById(R.id.btnApplyCoupon); 
    btnApplyCoupon.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      progressBar.setVisibility(View.VISIBLE); 

     } 
    }); 
    dialog.show(); 
} 

когда я делаю

@Bind(R.id.progressBar) ProgressBar progressBar; 

Это дает погрешность не @Bind применима к локальной переменной.

Это прекрасно работает.

final ProgressBar progressBar = (ProgressBar) dialog.findViewById(R.id.progressBar); 

Как использовать привязку для бабочки() в этом случае?

+1

В качестве альтернативы вы можете объявить 'progressBar' как поле вместо локальной переменной. –

+0

, но progreeBar не является частью активности. Но имеет значение R.layout.dialoge_apply_coupon. –

+0

вы должны привязать свое представление также к «Butterknife» с вашим «контекстом» – rookieDeveloper

ответ

0

Использование Butterknife можно использовать такие методы связывания:

Butterknife.bind(Dialog dialog) 

или

Butterknife.bind (@NonNull Object target, @NonNull Dialog source) 

Второй лучше, как он предполагает, где (в котором класс) связывает являются удержание. Помните, что эти функции возвращают Unbinder, и на самом деле импермантен развязать, когда диалог будет уничтожен, иначе могут возникнуть утечки памяти.