我正在尝试转换布局以使其包含 fragment 。 其中一个 View 是具有监听器的 ImageButton。 该代码作为 Activity 运行良好,但作为 Fragment 时会出现问题...
第一个问题是我无法使用 findViewById, 但我能够在这里找到答案并使用 getView() 修复它。
我找不到第二个问题的答案... 在我声明之后:
ImageButton camBt = (ImageButton)getView().findViewById(R.id.button1);
我想设置一个点击监听器:
camBt.setOnClickListener(listener);
但它一直表现得好像 ImageButton (camBt) 不存在一样...... 我什至不知道出了什么问题……它在 Activity 中运行良好……
这是完整的代码。 非常感谢!
public class CameraFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View V = inflater.inflate(R.layout.camera_fragment, container, false);
return V;
}
ImageButton camBt = (ImageButton)getView().findViewById(R.id.button1);
camBt.setOnClickListener(listener);
ImageButton.OnClickListener listener = new ImageButton.OnClickListener()
{
@Override
public void onClick(View arg0)
{
Camera.open().getParameters();
}
};
}
最佳答案
移动
ImageButton camBt = (ImageButton)getView().findViewById(R.id.button1);
camBt.setOnClickListener(listener);
在 onCreateView()
中。
喜欢
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.camera_fragment, container, false);
// Here it is
ImageButton camBt = (ImageButton)v.findViewById(R.id.button1);
camBt.setOnClickListener(listener);
return v;
}
还有一件事你需要明白变量名应该以小写字母开头。所以你应该使用 View v
而不是 View V
。
关于Android ImageButton 在 Activity 中运行良好。它在 fragment 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21903654/