我正在做的任务,我需要在点击后显示一个对话框EditText
.在该对话框中,我使用RadioButton
s 显示内容RecyclerView
.
现在,我想要做的是,在从对话框中选择RadioButton(在RecyclerView中的内容)之后,它应该返回该内容的值,然后应该关闭对话框.
为了生成一个对话框我用了一个DialogFragment
.
由于我是android开发的新手,我完全感到困惑,无法找到解决方案.
因为你的对话框是一个DialogFragment
你可以使用两件事
如果从a启动对话框
Activity
,则可以使用界面
创建一个接口
public interface ISelectedData { void onSelectedData(String string); }
在您的Activity中实现一个接口
public class MyActivity implements ISelectedData { ..... @Override public void onSelectedData(String myValue) { // Use the returned value } }
在对话框中,将界面附加到您的活动
private ISelectedData mCallback; @Override public void onAttach(Activity activity) { super.onAttach(activity); try { mCallback = (ISelectedData) activity; } catch (ClassCastException e) { Log.d("MyDialog", "Activity doesn't implement the ISelectedData interface"); } }
将值返回到Activity时,只需在Dialog中调用即可
mCallback.onSelectedData("myValue");
查看Android开发者网站上的示例.
如果从a启动对话框
Fragment
,则可以使用setTargetFragment(...)
启动对话框
MyDialog dialog = new MyDialog(); dialog.setTargetFragment(this, Constants.DIALOG_REQUEST_CODE); dialog.show(fragmentManager, Constants.DIALOG);
从Dialog返回值
Bundle bundle = new Bundle(); bundle.putString(Constants.MY_VALUE, "MyValue"); Intent intent = new Intent().putExtras(bundle); getTargetFragment().onActivityResult(getTargetRequestCode(), Activity.RESULT_OK, intent); dismiss();
在Fragment中获取值
@Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == Constants.DIALOG_REQUEST_CODE) { if (resultCode == Activity.RESULT_OK) { if (data.getExtras().containsKey(Constants.MY_VALUE)) { String myValue = data.getExtras().getString(Constants.MY_VALUE); // Use the returned value } } } }