从一个单独的类中调用一个片段的方法 [英] Calling a method in a fragment from a separate class

查看:198
本文介绍了从一个单独的类中调用一个片段的方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

什么是调用一个片段内的方法从不同类的最佳方式?我通过通过 getActivity()的背景下进级。沿着

What's the best way to call a method inside a fragment from a different class? I passed the context via getActivity() into the class. Something along the lines of

((片段)((活动)上下文).getMainFragment())方法();

这只是看起来不正确....

This just doesn't look right....

推荐答案

我觉得你可以做这样的事情:

I think you can do something like this:

创建界面 OnMyDialogClickListener 和类 MyDialogFragment ,它会调用创建接口的方法

Create interface OnMyDialogClickListener and class MyDialogFragment, which will call methods of created interface


public class MyDialogFragment extends DialogFragment {
private OnMyDialogClickListener listener;

public static DialogFragment newInstance(OnMyDialogClickListener listener) {
    DialogFragment fragment = new MyDialogFragment(listener);
    return fragment;
}

private MyDialogFragment(OnMyDialogClickListener listener) {
    this.listener = listener;
}

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    ....
    dialog.findViewById(R.id.button).setOnClickListener(new DialogButtonsClickListener);
    return dialog
}

private final class DialogButtonsClickListener implements View.OnClickListener {

    @Override
    public void onClick(View view) {
       listener.Method();
    }
}

public static interface OnMyDialogClickListener {

    void Method();

}

}


在你的目标实现片断接口:

Implement interface in your target fragment:


public class AlbumsFragment extends BaseFragment implements OnMyDialogClickListener {

    .....

    @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {
       //show dialog
        DialogFragment myDialogFragment = MyDialogFragment.newInstance(this);
        myDialogFragment.show(getFragmentManager(), ALBUM_ACTION_TAG);
    }

    @Override
    public void Method() {
         //some code
    }
}

这篇关于从一个单独的类中调用一个片段的方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆