如何在android中接收从对话框片段到活动的数据
我正在从活动调用DialogFragment以选择状态(DialogFragment中的RecyclerView)。如何在android中接收从对话框片段到活动的数据,android,android-activity,android-dialogfragment,Android,Android Activity,Android Dialogfragment,我正在从活动调用DialogFragment以选择状态(DialogFragment中的RecyclerView)。 但我不确定如何接收所选状态。 我知道使用Recyclerview,主要任务是将数据从DialogFragment发送回上一个活动。 从一个活动到另一个活动,我可以使用startActivityForResult(intent,code),但是从活动到DialogFragment我没有得到这个 Activity1 ---> DialogFragment ---> Act
但我不确定如何接收所选状态。
我知道使用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方法并传递所需的参数。在你的情况下,它是一个列表)