2016-04-25 60 views
2

onClickListener使用Butterknife是有點混亂onClickListener使用Butterknife

說,我這的onClick打開WhatsApp的分享東西WhatsApp的按鈕。通過常規方法,對onClickListener代碼將像

ImageButton buttonWhatsapp = (ImageButton) findViewById(R.id.whatsapp); 

buttonWhatsapp.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 
optionsShareThis.whatsApp(ActivityWebView.this, ShareThisURL); 
    } 
}); 

其中,optionsShareThisOptionsShareThis類的一個對象,並whatsApp(Context context, String Url)是此類中所定義的方法。

我很困惑如何使用Butterknife定義onClick事件。我試着用

@Bind(R.id.whatsapp) ImageButton ButtonWhatsapp;到View

綁定那麼對於onClick事件

@OnClick(R.id.whatsapp) void onClick() { 
    optionsShareThis.whatsApp(this, ShareThisURL); 
} 

Android Studio中下面的代碼表示現場ButtonWhatsapp和方法onClick()從未使用。發生了什麼?

編輯:我已經內onCreate()添加Butterknife.bind(this)。對不起,我沒有提到這一點早

+0

只需添加ButterKnife.bind代碼生成(這個);在setContentView()方法之後的OnCreate()方法中。 – sushildlh

+0

其綁定所有butterknife對象與您的xml和您的活動。 – sushildlh

回答

6

只需添加ButterKnife.bind(this);您的活動onCreate,然後

onCreate
@OnClick(R.id.whatsapp) 
public void onClick() { 
    optionsShareThis.whatsApp(this, ShareThisURL); 
} 

方法在任何地方

內您沒有添加此行@Bind(R.id.whatsapp) ImageButton ButtonWhatsapp;

+1

對不起。我已經添加Butterknife.bind(this),在onCreate – Traveller

+0

謝謝你的第二個建議。不需要@Bind(R.id.whatsapp)是有道理的。 – Traveller

+0

Android Studio聲明'public void onClick(){ optionsShareThisThiss_whatsApp(this,ShareThisURL);'永遠不會使用 – Traveller

2

我知道這已經很晚了,但由於最高票數的答案沒有解決這個問題,所以我正在回答。它是一個簡單的錯過。

您忘記將視圖作爲參數傳遞給您的方法。

@OnClick(R.id.whatsapp) 
public void onClick(View view) { 
    optionsShareThis.whatsApp(this, ShareThisURL); 
} 

希望這適用於未來的求助者。

0

由於Nongthonbam Tonthoi在評論中表示,構建/運行應用程序應刪除該警告,並且如前所述,onClick()應該公開。我在構建項目之前看到了相同的警告,但下面的代碼適用於我。

@OnClick(R.id.ingredients_btn) 
public void onClick() { 
    getSupportFragmentManager() 
      .beginTransaction() 
      .replace(R.id.recipe_detail_container, 
        IngredientFragment.newInstance(mIngredients)) 
      .commit(); 
0

那是因爲你不建項目尚未

@OnClick是註釋,這意味着當你建立你的項目

只是Build -> Rebuild Project