我正在尝试使用片段开发Android应用程序,在尝试使用Butterknife绑定视图并使用@OnClick注释时,我偶然发现了一个问题。
在我的片段中,我根据用户在菜单中的选择来扩展不同的布局。让我们说用户选择设置,然后我膨胀我的设置布局,其中包含用于注销的按钮。如果用户在菜单中选择同步,我会对同步视图进行充气,该视图会保留按钮以开始同步。
我的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。
现在的问题是,当我向我的设置充气时,一切正常,每当我按下我的退出按钮时,我都会收到toast信息,但是当我为同步视图应用程序膨胀时,由于以下异常而崩溃:
java.lang.RuntimeException: Unable to bind views for si.vitez.testapp.DetailFragment
是否可以注入两个视图,因此应用程序不会崩溃两个视图中的哪一个会被夸大?
答案 0 :(得分:1)
您应该为方法使用@Nullable
注释。
@Nullabale
@OnClick(R.id.yourId)
public void onClickMethod(){
// your code
}
有关详情,请参阅here。