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 调用上得到一个空指针异常。在我尝试设置侦听器之前,已提交片段事务。或者我认为是。我应该使用另一个覆盖来执行此操作吗?

4

2 回答 2

10

尝试更改将侦听器设置为的位置,onActivityCreated而不是onAttach. 根据 Android文档

onActivityCreated 在片段的活动被创建并且这个片段的视图层次被实例化时被调用。

当您onAttach在 Activity 设置其视图之前调用它时

于 2012-10-03T22:51:22.013 回答
1

嗨,我是 android 新手,当我动态添加一些按钮时,我遇到了 nullpointer 异常。Fragment 还有一个可以覆盖的方法 onViewCreated。从它的名字猜测你可以确定视图在那里:)

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

    super.onViewCreated(view, savedInstanceState);
    }
于 2013-05-28T09:03:48.917 回答