2016-01-27 52 views
1

我正在嘗試開發一個使用fragment的Android應用程序,並試圖使用Butterknife綁定視圖並使用@OnClick註釋時偶然發現一個問題。ButterKnife使用不同的佈局綁定片段

在我的片段中,根據用戶在菜單中的選擇,膨脹不同的佈局。讓我們說用戶選擇設置,然後充氣我的設置佈局,其中保存註銷按鈕。如果用戶在菜單中選擇同步,則充氣我的同步視圖,其中保持按鈕以開始同步。

我onCreateView看起來像下面的代碼:那麼

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
View rootView = null; 
if(settings) 
{ 
    rootView = inflater.inflate(R.layout.settings_view, container, false); 
} else { 
    rootView = inflater.inflate(R.layout.sync_view, container, false); 
} 
return rootView; 

}

我創造了我@Onclick方法註銷按鈕

@OnClick(R.id.btnSettingsLogout) 
    public void logout() { 
     Toast.makeText(getActivity(), "Button was pressed!", Toast.LENGTH_SHORT).show(); 
    } 

,並添加ButterKnife.bind(this, rootView);到年底我的onCreateView方法確保我返回rootView。

的問題是,現在當我吹我的設置中查看一切正常,我用烤麪包的消息映入眼簾時,我按我的註銷按鈕,但是當我誇大,因爲下列異常的我同步查看應用程序崩潰:

java.lang.RuntimeException: Unable to bind views for si.vitez.testapp.DetailFragment 

是否可以注入兩個視圖,所以應用程序不會崩潰沒有mater這兩個視圖中哪一個會膨脹?

回答

1

您應該使用@Nullable註釋爲您的方法。

@Nullabale 
@OnClick(R.id.yourId) 
public void onClickMethod(){ 
// your code 
} 

有關詳情,請參閱here

+0

謝謝,作品像一個魅力。 –