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