我想从用于返回 DialogFragment 的 Dialog 的 AlertDialog 的方法 setPositiveButton() 内部的 Fragment 调用一个方法,但不能这样做。
我在一个名为 Test 的类中有方法 doSomething() ,它扩展了 Fragment。在这个类内部,我有一个扩展 DialogFragment 的内部类。在方法 onCreateDialog 是问题发生的地方。看代码:
public class Test extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
View view = inflater.inflate(R.layout.activity_main, null);
return view;
}
public static class SelectDeviceDialogFragment extends DialogFragment {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
return new AlertDialog.Builder(getActivity())
.setPositiveButton(R.string.ok,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
((Test) getTargetFragment()).doSomething();
}
}).create();
}
}
private void doSomething() {}
}
DialogFragment 和 Fragment 来自 lib android.support.v4。
发生错误是因为无法完成对 Test 的强制转换。在那种情况下,我怎么能调用方法 doSomething 呢?
谢谢。