我正在执行的任务中,我需要在点击TOP 1
后显示对话框。在该对话框中,我使用SELECT TOP 1 t1.name
FROM test t1
INNER JOIN (SELECT Max(value) AS value FROM test) t2
ON t2.value = t1.value;
显示EditText
s的内容。
现在,我想要做的是,在从对话框中选择RadioButton(在RecyclerView中的内容)之后,它应该返回该内容的值,然后应该关闭对话框。
要生成对话框,我使用了RadioButton
。
由于我是Android开发的新手,我完全感到困惑,无法找到解决方案。
答案 0 :(得分:19)
因为您的对话框是DialogFragment
,您可以使用两件事
- 如果您从
醇>Activity
开始对话,则可以使用界面
创建一个界面
public interface ISelectedData {
void onSelectedData(String string);
}
在您的活动中实现一个界面
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时,只需在对话框中调用
mCallback.onSelectedData("myValue");
检查Android开发者网站上的example。
- 如果您从
醇>Fragment
开始对话,则可以使用setTargetFragment(...)
启动对话
MyDialog dialog = new MyDialog();
dialog.setTargetFragment(this, Constants.DIALOG_REQUEST_CODE);
dialog.show(fragmentManager, Constants.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
}
}
}
}