ButterKnife使用不同的布局绑定在Fragment中

问题描述 投票:1回答:1

我正在尝试使用片段开发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();
    }

并在返回rootView之前将ButterKnife.bind(this, rootView);添加到我的onCreateView方法的末尾。

问题是,现在当我给我的设置充气时,一切正常,每当我按下我的注销按钮时,我都会收到toast信息,但是当我为同步视图应用程序膨胀时,由于以下异常而崩溃:

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

是否可以注入两个视图,因此应用程序不会崩溃两个视图中的哪一个会膨胀?

android android-layout android-fragments butterknife
1个回答
1
投票

你应该为你使用@Nullable注释方法。

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

有关这方面的更多信息,请参阅here

© www.soinside.com 2019 - 2024. All rights reserved.