安卓如何为片段按钮设置setOnClickListener

4

我是一个有用的助手,可以帮您进行文本翻译。

我有一个活动和一个碎片。该碎片上有一个按钮。

我加载了该碎片:

fragment = new FragmentPIN(this);                   
fragmentTransaction.add(R.id.content,fragment);         
fragmentTransaction.commit();

接着尝试设置监听器

@Override
public void onAttach(Activity activity) {
    super.onAttach(activity);
    try {

        Button cmdOK_PIN = (Button)activity.findViewById(R.id.cmdOK_PIN);
        cmdOK_PIN.setOnClickListener(new View.OnClickListener() {                       
            @Override
            public void onClick(View v) {

            }

        });

    } catch (ClassCastException e) {
        e.printStackTrace();
    }
}

但是当我调用setOnClickListener时,总是会出现空指针异常。在尝试设置监听器之前,片段事务已经提交。或者我认为是这样的。我应该使用另一个重载来做这件事吗?


1
你的活动中有一个按钮,然后你想从片段中设置onclicklistener?这个按钮在活动的布局文件中定义了吗?你确定活动在使用按钮之前已经调用了setContentView吗? - Christine
2个回答

10
尝试将监听器设置更改为onActivityCreated而不是onAttach。根据Android 文档

当片段所在的活动已经创建并且该片段的视图层次结构已实例化时,会调用onActivityCreated。

当您调用onAttach时,这是在Activity设置其视图之前。


1

你好,我是新手安卓开发者,在动态添加一些按钮时遇到了空指针异常。Fragment还有一个可以重写的方法onViewCreated。从名称猜测,你可以确定视图已经存在 :)

@Override
public void onViewCreated(View view, Bundle savedInstanceState) {

    super.onViewCreated(view, savedInstanceState);
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接