【问题标题】:android how to setOnClickListener for fragment buttonandroid如何为片段按钮设置OnClickListener
【发布时间】: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 吗?

标签: android nullpointerexception fragment


【解决方案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);
        }
    

    【讨论】:

      猜你喜欢
      • 2013-01-29
      • 1970-01-01
      • 1970-01-01
      • 2019-05-06
      • 1970-01-01
      • 2014-05-18
      • 1970-01-01
      • 2018-01-10
      • 2019-11-07
      相关资源
      最近更新 更多