gpt4 book ai didi

android - 在 Fragments 和 Show 之间切换隐藏 AlertDialog 并保持状态

转载 作者:行者123 更新时间:2023-12-05 07:51:03 26 4
gpt4 key购买 nike

我的 Android 应用程序有以下场景。

  • 第 1 步:Main Activity 加载 Fragment1
  • 第 2 步:Fragment1 在某些事件上显示了一个 AlertDialog,如下所示 Fragment1 with AlertDialog
  • 第 3 步:对话框的右上角有一个摄像头图标。单击它时,它会打开相机以拍摄照片,如下所示
Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);intent.putExtra(MediaStore.EXTRA_OUTPUT, getCapturedImagePath());((Activity)context).startActivityForResult(intent, Constant.CAMERA_CAPTURE);((Activity) context).overridePendingTransition(R.anim.right_to_left_layout, R.anim.left_to_right_layout);
  • 第 4 步:当图片被捕获时,我们重定向到另一个名为 Fragment2 的 fragment ,我们在其中使用以下代码显示捕获的照片。
FragmentTransaction fragTrans = getSupportFragmentManager().beginTransaction();//Hide Fragment1fragTrans.hide(fragment1);//Add Fragment2fragTrans.add(R.id.frame_container, fragment2, fragment2.getClass().getSimpleName());fragTrans.addToBackStack(fragment2.getClass().getSimpleName());fragTrans.commit();

看起来像Fragment2 with AlertDialog

这里我们几乎没有问题。

问题 1: 它在 Fragment2 上显示相同的 AlertDialog,而实际上在 Fragment1 中打开>Fragment2 在该对话框后面加载。如何隐藏这个对话框?

问题 2:Fragment2 上我们有 Correct 按钮,当它被点击时我们需要关闭 Fragment2 并使用相同的警告对话框显示 Fragment1,或者您可以说它处于启动相机之前的相同状态。我们如何做到这一点?

请指导。

谢谢

最佳答案

对于添加第一个 fragment ,写:

 fragmentManager.beginTransaction().replace(R.id.relativeLayout, fragment).addToBackStack(fragment1.getClass().getSimpleName()).commit();

在 fragment 1 中显示 AlertDialog

 private void showDialog() {

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setPositiveButton("Camera", null);
builder.setNegativeButton("Cancel", null);
final AlertDialog alertDialog = builder.create();
alertDialog.setCanceledOnTouchOutside(false);

alertDialog.setOnShowListener(new DialogInterface.OnShowListener() {
@Override
public void onShow(DialogInterface dialog) {
Button button_positive = alertDialog.getButton(AlertDialog.BUTTON_POSITIVE);
Button button_negative = alertDialog.getButton(AlertDialog.BUTTON_NEGATIVE);


button_negative.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
alertDialog.dismiss();
}
});

button_positive.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Your Camera Call
Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
// intent.putExtra(MediaStore.EXTRA_OUTPUT, "image path");
getActivity().startActivityForResult(intent, "REQUEST_CODE"); getActivity().overridePendingTransition(R.anim.right_to_left_layout, R.anim.left_to_right_layout);
//make sure that don't call ==> alertDialog.dismiss();
}
});

}
});
alertDialog.show();

}

在相机调用 OnActivityresult 之后:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
//returned from camera
// goto next Fragment ==> getActivity().fragmentManager.beginTransaction().replace(R.id.relativeLayout, fragment).addToBackStack(fragment2.getClass().getSimpleName()).commit();
// and for back to fragment 1 call in fragment 2 ==> //getActivity().fragmentManager.popBackStack(fragment2.getClass().getSimpleName());
}

当您到达 fragment 1 时,您的状态与 fragment 开始时的状态相同

希望你能得到解决

关于android - 在 Fragments 和 Show 之间切换隐藏 AlertDialog 并保持状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35598392/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com