繁体   English   中英

如何在片段上监听来自Activity的按钮的单击动作?

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

我有一个带有Fragment.I的活动,我想听我在我的活动中来自我的片段的按钮。 示例代码在这里;

主要活动

  OnSearchClickListener searchListener;


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


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

myFragment

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

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

听众

public interface OnSearchClickListener {
public void OnSearchClick();

}

我用这种结构。 但是它给了我nullpointerexception。 你告诉我如何听片段中一个活动中的按钮吗?

你告诉我如何听片段中一个活动中的按钮吗?

这样做是正确的,但是忘记使用当前添加在FragmentManager中的Fragment对象初始化searchListener对象。 这样做:

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

现在,使用searchListener对象从“单击按钮的活动”中调用OnSearchClick

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

您应该在onCreate中包含以下内容:

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

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

searchListener = (OnSearchClickListener) frag;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM