Android 如何在创建片段后立即显示AlertDialog
我想在创建片段后立即显示一个AlertDialog(带有两个单选按钮和一个OK按钮) 调用对话框片段的最佳位置在哪里?我在onViewCreated()和onResume()中都尝试过,但我不确定什么是最佳实践 此外,为了确保对话框不会在每次由于屏幕旋转而停止/重新创建片段时显示,我创建了名为mShowDialog的布尔值,并在onCreate()中将其设置为“true”,然后使用“If”语句决定是否显示该对话框(示例见下文) 上述代码是满足这两个要求的最佳方式吗 顺便说一句,我对编程相当陌生Android 如何在创建片段后立即显示AlertDialog,android,android-layout,android-fragments,Android,Android Layout,Android Fragments,我想在创建片段后立即显示一个AlertDialog(带有两个单选按钮和一个OK按钮) 调用对话框片段的最佳位置在哪里?我在onViewCreated()和onResume()中都尝试过,但我不确定什么是最佳实践 此外,为了确保对话框不会在每次由于屏幕旋转而停止/重新创建片段时显示,我创建了名为mShowDialog的布尔值,并在onCreate()中将其设置为“true”,然后使用“If”语句决定是否显示该对话框(示例见下文) 上述代码是满足这两个要求的最佳方式吗 顺便说一句,我对编程相当陌生
提前感谢您的帮助。这方面的最佳做法是在
onCreateView()
片段方法中放大对话框。如果您试图从添加片段的活动中创建它,我很幸运地在我的片段中添加了FragmentListener
,并从活动中进行设置。这是我所有片段扩展的基本BaseFragment
类:
public class BaseFragment extends Fragment {
public Context context;
public Activity activity;
public FragmentListener fragmentListener;
private boolean attached = false;
public BaseFragment() {
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
if (!isAttached()) {
this.context = activity;
this.activity = activity;
if (this.fragmentListener != null) {
this.fragmentListener.onAttached();
}
setAttached(true);
}
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
if (!isAttached()) {
this.context = context;
this.activity = (Activity) context;
if (this.fragmentListener != null) {
this.fragmentListener.onAttached();
}
setAttached(true);
}
}
@Override
public void onDetach() {
super.onDetach();
setAttached(false);
if (this.fragmentListener != null){
this.fragmentListener.onDetached();
}
}
public void setFragmentListener(FragmentListener fragmentListener) {
this.fragmentListener = fragmentListener;
}
public View.OnClickListener onBackTapped = new View.OnClickListener() {
@Override
public void onClick(View v) {
getActivity().onBackPressed();
}
};
public boolean isAttached() {
return attached;
}
public void setAttached(boolean attached) {
this.attached = attached;
}
public boolean isPermissionGranted(String permission){
return ContextCompat.checkSelfPermission(context, permission) == PackageManager.PERMISSION_GRANTED;
}
public boolean ifShouldShowRationaleForPermission(String permission){
return ActivityCompat.shouldShowRequestPermissionRationale(activity, permission);
}
public void showPermissionRequest(Activity activity, int requestCode, String... permissions){
ActivityCompat.requestPermissions(activity, permissions, requestCode);
}
}
这样,我可以在我的活动中做到这一点:
MyFragment myFragment = new MyFragment();
myfragment.setFragmentListener(new FragmentListener() {
@Override
public void onAttached() {
// Stuff I want to do when it is attached
}
@Override
public void onDetached() {
// Stuff I want to do when it is detached
}
});
fragmentManager.beginTransaction()
.add(R.id.container, myFragment)
.commit();
然后我可以在片段运行时添加任何我想要的代码,它是各种各样的东西
祝你好运
MyFragment myFragment = new MyFragment();
myfragment.setFragmentListener(new FragmentListener() {
@Override
public void onAttached() {
// Stuff I want to do when it is attached
}
@Override
public void onDetached() {
// Stuff I want to do when it is detached
}
});
fragmentManager.beginTransaction()
.add(R.id.container, myFragment)
.commit();