如何监听片段上 Activity 按钮的点击动作?

How to listen click action of the button which is from Activity on fragment?

我有一个 activity 有一个 Fragment.I 想听我的按钮,它在我的片段中的 activity 中。示例代码在这里;

主要Activity

  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 中的按钮吗?

Do you tell me how can i listen a button which in an Activity from a fragment ?

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

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

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

您只需在 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;