如何在android中接收从对话框片段到活动的数据

如何在android中接收从对话框片段到活动的数据,android,android-activity,android-dialogfragment,Android,Android Activity,Android Dialogfragment,我正在从活动调用DialogFragment以选择状态(DialogFragment中的RecyclerView)。 但我不确定如何接收所选状态。 我知道使用Recyclerview,主要任务是将数据从DialogFragment发送回上一个活动。 从一个活动到另一个活动,我可以使用startActivityForResult(intent,code),但是从活动到DialogFragment我没有得到这个 Activity1 ---> DialogFragment ---> Act

我正在从活动调用DialogFragment以选择状态(DialogFragment中的RecyclerView)。
但我不确定如何接收所选状态。
我知道使用Recyclerview,主要任务是将数据从
DialogFragment发送回上一个活动。

从一个活动到另一个活动,我可以使用
startActivityForResult(intent,code)
,但是从
活动到DialogFragment
我没有得到这个

Activity1 ---> DialogFragment ---> Activity1

有人能帮我吗。提前感谢。

首选方法是使用回调从片段获取信号。此外,这也是Android在

例如,在您的
对话框fragment
中,添加一个接口并注册它

public static interface OnCompleteListener {
    public abstract void onComplete(String time);
}

private OnCompleteListener mListener;

// make sure the Activity implemented it
@Override
public void onAttach(Activity activity) {
    super.onAttach(activity); 
    try {
        this.mListener = (OnCompleteListener)activity;
    }
    catch (final ClassCastException e) {
        throw new ClassCastException(activity.toString() + " must implement OnCompleteListener");
    }
}
现在在您的
活动中实现此接口

public class MyActivity extends Activity implements MyDialogFragment.OnCompleteListener {
    //...

    public void onComplete(String time) {
        // After the dialog fragment completes, it calls this callback.
        // use the string here
    }
}
现在,在
对话框fragment
中,当用户单击OK按钮时,通过回调将该值发送回
活动

public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
    String time = Integer.toString(hourOfDay) + " : " + Integer.toString(minute);
    this.mListener.onComplete(time);
}

您可以使用类似的方式使用cal back传递选定的列表值。首选方法是使用回调从片段获取信号。此外,这也是Android在

例如,在您的
对话框fragment
中,添加一个接口并注册它

public static interface OnCompleteListener {
    public abstract void onComplete(String time);
}

private OnCompleteListener mListener;

// make sure the Activity implemented it
@Override
public void onAttach(Activity activity) {
    super.onAttach(activity); 
    try {
        this.mListener = (OnCompleteListener)activity;
    }
    catch (final ClassCastException e) {
        throw new ClassCastException(activity.toString() + " must implement OnCompleteListener");
    }
}
现在在您的
活动中实现此接口

public class MyActivity extends Activity implements MyDialogFragment.OnCompleteListener {
    //...

    public void onComplete(String time) {
        // After the dialog fragment completes, it calls this callback.
        // use the string here
    }
}
现在,在
对话框fragment
中,当用户单击OK按钮时,通过回调将该值发送回
活动

public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
    String time = Integer.toString(hourOfDay) + " : " + Integer.toString(minute);
    this.mListener.onComplete(time);
}

您可以通过类似的方式使用cal返回所选列表值

您可以在活动中使用接口调用它

公共接口OnChangeListener{ 变更无效(int状态)


您可以在活动中使用接口调用它

公共接口OnChangeListener{ 变更无效(int状态)


我在DialogFragment中使用RecyclerView,在这种情况下,我必须在RecyclerView适配器中创建接口,对吗?是的,完全可以代替DialogFragment,在Adapter中完成所有这些工作。测试了代码,但我不知道我哪里做错了,我得到了ClassCastException,应用程序在没有打开DialogFragment的情况下崩溃Activity onComplete(字符串时间)呈灰色,表示不在任何地方使用。请帮助我犯错误的地方。你没有在适配器中调用onComplete方法。请读出我与你共享的最后一个代码片段(onTimeSet方法,我在其中调用onComplete方法并传递所需的参数。在你的情况下,它是一个列表)我在DialogFragment中使用RecyclerView,在这种情况下,我必须在RecyclerView适配器中创建接口,对吗?是的,完全可以代替DialogFragment,在Adapter中完成所有这些工作。测试了代码,但我不知道我哪里做错了,我得到了ClassCastException,应用程序在没有打开DialogFragment的情况下崩溃Activity onComplete(字符串时间)呈灰色,表示不在任何地方使用。请帮助我犯错误的地方。你没有在适配器中调用onComplete方法。请读出我与你共享的最后一个代码片段(onTimeSet方法,我在其中调用onComplete方法并传递所需的参数。在你的情况下,它是一个列表)