Android ImageButton 在 Activity 中运行良好。它在 fragment 中不起作用

标签 android android-fragments listener onclicklistener imagebutton

我正在尝试转换布局以使其包含 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/

相关文章:

java - Html.fromHtml() 在 ListView 回收问题中使用自定义 ImageGetter

android - 整洁架构 : Use different model classes for different data sources?

android - 无限滚动 ListView - 在构建期间调用 setState() 或 markNeedsBuild

java - 能否从片段类内部调用PlaceAutocompleteFragment(覆盖模式)

android - 在后台监听触摸事件

android - Kotlin MultiPlatform - 发布 Android 库失败

android - 我可以使用兼容包 v4 创建 Fragment ListActivity 吗?

android - FragmentPagerAdapter 中的 RecyclerView 仅在屏幕旋转时更新

android - 正在调用 Textview onClick 而不是 Listview onItemClick。

Android 屏幕旋转检测