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

时间:2015-11-19 15:11:30

标签: java android android-fragments fragment listener

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

MainActivity

  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。你告诉我怎么能听一个片段活动中的按钮?

2 个答案:

答案 0 :(得分:1)

  

你能告诉我怎样才能听一个活动中的按钮   片段?

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

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

现在使用searchListener对象从Button on Button上调用OnSearchClick

答案 1 :(得分:1)

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