gpt4 book ai didi

android - 如何从对话框 fragment 中获取主机 fragment 中的按钮点击

转载 作者:IT老高 更新时间:2023-10-28 23:01:59 33 4
gpt4 key购买 nike

我有一个 listFragment,我想在 listItemClick 上显示一个 DialogFragment(是/否)。我想取回 listFragment 中的用户选择(是/否)。我已经阅读了有关监听器接口(interface)机制的信息,但它适用于 Activity <-> fragment 。一种方法可以是:

  1. 在包含是/否按钮选择功能的对话框 fragment 中定义接口(interface),并在警报对话框正/负按钮点击时调用这些方法。
  2. 在 Main Activity 中实现此接口(interface)。
  3. 在listFragment onItem点击时启动dialogFragment。
  4. 在 Activity 中保存用户选择。
  5. 通过在 Main Activity 中实现的另一个接口(interface)在 listFragment 中获取此选择。

但是对于这个简单的任务,我们有什么简单的机制吗?有什么例子或代码吗?

最佳答案

还有另一种方法可以从 DialogFragment 中获取结果。

您可以使用 Fragment.setTargetFragment() .创建 DialogFragment 的实例时,将目标 fragment 设置为它。然后在 DialogFragment 中,您可以从 Fragment.getTargetFragment() 获取此 fragment .

例如,你可以这样做:

public interface DialogClickListener {
public void onYesClick();
public void onNoClick();
}
public class MyListFragment extends ListFragment implements DialogClickListener {

...

private void showDialog() {
DialogFragment dialog = new MyDialogFragment();
dialog.setTargetFragment(this, 0);
dialog.show(getFragmentManager(), "dialog");
}

@Override
public void onYesClick() {
// do something
}

@Override
public void onNoClick() {
// do something
}
}
public class MyDialogFragment extends DialogFragment {
private DialogClickListener callback;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

try {
callback = (DialogClickListener) getTargetFragment();
} catch (ClassCastException e) {
throw new ClassCastException("Calling fragment must implement DialogClickListener interface");
}
}

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setMessage("message")
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
callback.onYesClick();
}
}).setNegativeButton("No", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
callback.onNoClick();
}
});

return builder.create();
}
}

关于android - 如何从对话框 fragment 中获取主机 fragment 中的按钮点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13238959/

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