【问题标题】:How to listen click action of the button which is from Activity on fragment?如何监听来自片段上 Activity 的按钮的点击动作?
【发布时间】:2015-11-19 15:11:30
【问题描述】:

我有一个包含片段的活动。我想从我的片段中收听我的活动中的按钮。示例代码在这里;

主活动

  OnSearchClickListener searchListener;


@Override
protected void onCreate(Bundle savedInstanceState){
......
}


myButton.setOnclickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            searchListener.OnSearchClick();
        }
    });

我的片段

public class MyFragment extends Fragment implements OnSearchClickListener{
........
 @Override
public void OnSearchClick() {

   Toast.makeText(context,"This message from fragment",......
}

听众

public interface OnSearchClickListener {
public void OnSearchClick();

}

我使用了这种结构。但它给了我空指针异常。你能告诉我如何从片段中监听 Activity 中的按钮吗?

【问题讨论】:

    标签: java android android-fragments fragment listener


    【解决方案1】:

    你能告诉我如何从一个 Activity 中监听一个按钮吗? 片段?

    以正确的方式进行操作,但忘记使用当前添加到 FragmentManager 中的 Fragment 对象初始化 searchListener 对象。这样做:

    MyFragment  mFragment = new MyFragment();
    ...
    ft.add(R.id.content, mFragment).commit();
    searchListener=(OnSearchClickListener)mFragment;
    

    现在使用searchListener 对象在按钮点击时从Activity 调用OnSearchClick

    【讨论】:

      【解决方案2】:

      您只需在 MainActivity 的 onCreate 方法中初始化 OnSearchClickListener searchListener;

      你的 onCreate 应该有这样的东西:

      MyFragment frag = new MyFragment();
      FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
                  ft.replace(R.id.main_activity_container, frag);
                  ft.commit();
      

      在开始交易之前,请执行以下操作:

      searchListener = (OnSearchClickListener) frag;
      

      【讨论】:

        猜你喜欢
        • 2017-07-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-17
        • 1970-01-01
        • 2013-12-24
        相关资源
        最近更新 更多