Android ImageButton在Activity中运作良好.它在Fragment中不起作用

Sie*_*ion 3 android listener imagebutton android-fragments onclicklistener

我正在尝试转换布局,以便它包含片段.其中一个视图是具有侦听器的ImageButton.代码作为一个活动工作正常,但作为一个片段麻烦...

第一个问题是我无法使用findViewById,但我能够在这里找到答案并用getView()修复它.

在我宣布之后,我无法找到第二个问题的答案:

ImageButton camBt = (ImageButton)getView().findViewById(R.id.button1);
Run Code Online (Sandbox Code Playgroud)

我想设置一个on click监听器:

camBt.setOnClickListener(listener);
Run Code Online (Sandbox Code Playgroud)

但它一直表现得像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();
}
}; 
}
Run Code Online (Sandbox Code Playgroud)

Pan*_*mar 9

移动

ImageButton camBt = (ImageButton)getView().findViewById(R.id.button1);
camBt.setOnClickListener(listener);
Run Code Online (Sandbox Code Playgroud)

在里面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;
}
Run Code Online (Sandbox Code Playgroud)

还有一件事你需要了解变量名称应该以小写字母开头.所以你应该使用View v而不是View V.

  • 用V替换getView() (2认同)