这是访问Google API的摘要:
/* Called from ErrorDialogFragment when the dialog is dismissed. */
public void onDialogDismissed() {
mResolvingError = false;
}
/* A fragment to display an error dialog */
public static class ErrorDialogFragment extends DialogFragment {
public ErrorDialogFragment() { }
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Get the error code and retrieve the appropriate dialog
int errorCode = this.getArguments().getInt(DIALOG_ERROR);
return GooglePlayServicesUtil.getErrorDialog(errorCode,
this.getActivity(), REQUEST_RESOLVE_ERROR);
}
@Override
public void onDismiss(DialogInterface dialog) {
((MainActivity)getActivity()).onDialogDismissed();
}
}
如果代码在一个活动中,这是有效的,如何在静态片段类中使用onDialogDismissed()
片段
我试过这个,似乎不起作用:
@Override
public void onDismiss(DialogInterface dialog) {
ErrorDialogFragment innerClass = new OuterFragment.ErrorDialogFragment();
innerClass.onDialogDismissed(); // Still cant find the method of the outer class
}
答案 0 :(得分:2)
使用context
。每当你调用外部类时只需传递上下文。
然后你可以使用Context来dismiss
对话框。
尝试:
context..onDialogDismissed();
答案 1 :(得分:2)
ErrorDialogFragment
是一个static
(内部)类,就这样,直接访问外部类的 static 上下文中的所有内容
方法onDialogDismissed();
不属于外部类的static
上下文(即它不是static
),这就是为什么它不能直接从内心阶级。
要访问它,您需要一个外部类的实例。可能,getActivity()
方法提供了这样的实例,这就是它在这种情况下起作用的原因。
答案 2 :(得分:1)
onDialogDismissed()
不是ErrorDialogFragment
的方法,所以这不起作用:
ErrorDialogFragment innerClass = new OuterFragment.ErrorDialogFragment();
innerClass.onDialogDismissed();
您可以使用OuterClass.this
来访问外部类的成员和方法,例如:
@Override
public void onDismiss(DialogInterface dialog) {
OuterClass.this.onDialogDismissed();
}
如果仅使用onDialogDismissed()
,则编译器会假定该方法位于ErrorDialogFragment
类中。
但是,这会导致onDialogDismissed()
不是static
方法的下一个问题 - 正如 kocko 指出的那样。