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的主要内容,如果未能解决你的问题,请参考以下文章

如何为Android中的不同布局设置链中按钮的大小

如何为片段设置观察者

如何为 UIScrollview 内的按钮设置边距?

如何为每个 RadioButton 设置单独的颜色?

如何为 apollo 客户端生成片段类型?

如何为代码中设置的参数设置布局单位?