android如何为片段按钮设置OnClickListener
Posted
技术标签:
【中文标题】android如何为片段按钮设置OnClickListener【英文标题】:android how to setOnClickListener for fragment button 【发布时间】:2012-09-24 22:02:27 【问题描述】:我有一个活动和一个片段。片段上有一个按钮。
我加载片段:
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 调用时得到一个空指针异常。在我尝试设置侦听器之前,已提交片段事务。或者我认为是。我应该使用另一个覆盖来执行此操作吗?
【问题讨论】:
Err,你的activity中有一个按钮,然后你想从fragment中设置onclicklistener?按钮是在activity的布局文件中定义的吗?您确定在您使用按钮之前 Activity 已调用 setContentView 吗? 【参考方案1】:尝试将侦听器的设置位置更改为onActivityCreated
而不是onAttach
。根据安卓docs:
onActivityCreated 在片段的 Activity 被创建并且该片段的视图层次被实例化时被调用。
当您调用 onAttach
时,即是在 Activity 设置其视图之前
【讨论】:
【参考方案2】:嗨,我是 android 新手,当我动态添加一些按钮时,我遇到了 nullpointer 异常。 Fragment 还有一个可以覆盖的方法 onViewCreated。 从它的名字猜测你可以确定视图在那里:)
@Override
public void onViewCreated(View view, Bundle savedInstanceState)
super.onViewCreated(view, savedInstanceState);
【讨论】:
以上是关于android如何为片段按钮设置OnClickListener的主要内容,如果未能解决你的问题,请参考以下文章