android如何为片段按钮设置setOnClickListener

时间:2012-10-03 22:10:37

标签: android nullpointerexception fragment

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

我加载片段:

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

2 个答案:

答案 0 :(得分:10)

尝试将您将听众设置的位置更改为onActivityCreated而不是onAttach。根据Android docs

  

在创建片段活动并实例化此片段的视图层次结构时,将调用onActivityCreated。

当您在“活动”设置其视图

之前调用onAttach

答案 1 :(得分:1)

嗨我刚接触到android并且在动态添加一些按钮时获得了nullpointer异常。片段还有一个onViewCreated方法,你可以覆盖。 从它的名字猜测你可以确定视图在那里:)

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

    super.onViewCreated(view, savedInstanceState);
    }