我目前正在尝试构建一个简单的设置片段警报框。与片段警报框的故障
我已经构建了警告框的主体,但是我注意到实际的Dialog方法没有使用。此外,该对话框方法取代了onCreate()
方法。
我该如何实际使用Dialog方法?在创建对话框方法后,我似乎无法简单地调用它,因为它出现错误。
我必须在某些XML中引用它吗? 如果是这样,那么哪个XML - Fragment的XML或其父Activity的XML?
以下是我的Dialog Fragment的代码。我还没有修改它的XML。
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.Fragment;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
public class ExceedingLimitFragment extends Fragment {
public Dialog onCreateDialogExceed (Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle(R.string.exceeding_limit_title);
builder.setMessage(R.string.exceeding_limit_message);
builder.setPositiveButton(R.string.exceeding_limit_positive, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
Intent ExceedingLimitPositiveIntent = new Intent (ExceedingLimitFragment.this.getActivity(), SettingsMenu.class);
startActivity(ExceedingLimitPositiveIntent);
}
});
builder.setNegativeButton(R.string.exceeding_limit_negative, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
return builder.create();
}
}
你好。关于第一点,我已经删除了onCreate调用中的'超级'标签。这个可以吗?另外,在第二段中,Studio声明下一个类不会覆盖它的超类。所以我已经把它留下了。而在最后一段中,只是一个问题 - 我可以使用dialog.cancel()来代替吗?谢谢! – Mildwood
如果你从Android重写一个方法,确保在调用其他任何东西之前先调用'super'。看看FragmentDialogs的文档,看看onCreateDialog的作用和创建时间:)至于'dialog.cancel()'问题,它取决于你想做什么。如果你想关闭对话框,你应该调用'fragmentDialog.dismiss()'而不是'dialog.cancel()'。 FragmentDialogs基本上是一个承载对话框的片段,因此你希望片段为你处理对话框。 –