gpt4 book ai didi

java - 当用户从 android 中的列表中选择一个项目时关闭对话窗口

转载 作者:行者123 更新时间:2023-11-30 00:19:27 24 4
gpt4 key购买 nike

我在 github 上找到了一个自定义的 BlurDialog for android。它会打开一个带有选项的新对话窗口,并模糊屏幕其余部分的背景。我让它工作得很好,但我遇到了一个问题,如果我在选项列表中选择一个项目,它会启动正确的 Activity ,但是当我点击后退按钮时,我会回到上一个 Activity 和对话框窗口仍然开放。关闭它的唯一方法是在对话框窗口外单击。

我正在尝试了解如何在启动新 Activity 之前关闭对话窗口,以便当用户返回到该屏幕时对话窗口不再打开。我还是 android 的新手,所以我确定我错过了一些非常简单的东西,我就是想不通。这是我的 fragment 中创建模糊对话窗口的“onCreateDialog”方法...

@Override
@NonNull
public Dialog onCreateDialog(Bundle savedInstanceState) {
final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
View view = getActivity().getLayoutInflater().inflate(R.layout.fragment_profile_dialog, null);
TextView text = (TextView) view.findViewById(R.id.follow_or_unfollow);
if(isSelf) {
text.setText("Edit Profile");
} else {
text.setText((isFollowing) ? "UnFollow" : "Follow");
}
RelativeLayout followButton = (RelativeLayout) view.findViewById(R.id.follow_layout);
RelativeLayout chatButton = (RelativeLayout) view.findViewById(R.id.chat_layout);


followButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//NEED TO CLOSE DIALOG WINDOW HERE
if(isSelf) {
//activate ProfileEditActivity
getActivity().startActivity(new Intent(getActivity(), EditProfileActivity.class));
} else {
Map<String, Object> updates = new HashMap<>();
if(isFollowing) {
//unfollow
updates.put("/following/" + user.getUid() + "/users/" + userID, null);
updates.put("/followers/" + userID + "/users/" + user.getUid(), null);
} else {
updates.put("/following/" + user.getUid() + "/users/" + userID, true);
updates.put("/followers/" + userID + "/users/" + user.getUid(), true);
//follow
}
database.getReference().updateChildren(updates);
getFragmentManager().beginTransaction().remove(ProfileDialogFragment.this).commit();
}
}
});

chatButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(getContext(), "Implement the start activity for chat", Toast.LENGTH_SHORT).show();
}
});

builder.setView(view);
return builder.create();
}

我已经尝试在此处的 github 页面上查看示例应用程序 Blurred Dialog Github

但它只展示了如何激活对话框,而不是如何在用户选择对话框中的项目时实际关闭它。其他一切都运行良好,如果我单击一个项目,它会启动正确的 Activity ,如果我在对话框外单击,对话框将关闭。我只需要在用户单击对话框中的项目后以编程方式关闭它。谢谢。

最佳答案

使用 final AlertDialog builder = new AlertDialog.Builder(getActivity()).create() 而不是 final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()) 创建对话框 并在像 dialog.show() 这样的设置 View 后显示对话。

每当用户点击屏幕上的某些东西时,您可以使用像 dialog.dismiss() 这样的对话框对象关闭对话框,即在您的关注按钮内点击

followButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dialog.dismiss()

//YOUR CODE SHOULD COME HERE

}
});

关于java - 当用户从 android 中的列表中选择一个项目时关闭对话窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46575905/

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