gpt4 book ai didi

java - 如何将按钮连接到将在 FrameLayout 内使用用户输入编辑 TextView 的对话框?

转载 作者:行者123 更新时间:2023-12-01 23:44:49 24 4
gpt4 key购买 nike

我根本不明白DialogFragment。如何创建一个,如何从中获取用户输入,并将其设置到 TextView 中。

我希望“标题”按钮在单击时弹出一个 DialogFragment,要求用户输入其情绪板的标题。用户输入标题。当他们单击 PostiveButton“完成”时,用户的标题将设置到情绪板的左上角框架中,其中有一个带有提示的 TextView。

拜托!提出问题,因为我不太了解对话框设置。

这是我的 MainActivity 中的 main_layout 的图片。每个元素都有一个“@+id/”。

enter image description here

最佳答案

您正在寻找的解决方案是回调:

  1. 创建一个带有用作回调的方法的接口(interface)
  2. 在 Activity 上实现接口(interface)
  3. 创建对话框 fragment 并在onAttach中获取界面
  4. 在 Activity 上显示对话框 fragment
  5. 关闭对话框 fragment 时使用界面实例传递文本
interface Callback {
updateText(String text)
}
class CoolActivity... implements Callback

onCreate {
//find your views
showDialogBtn.setOnClickListener(...
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
Fragment prev = getSupportFragmentManager().findFragmentByTag("yourTag");
if (prev != null) {
ft.remove(prev);
}
ft.addToBackStack(null);

DialogFragment dialogFragment = ExampleDialogFragment.newInstance();
dialogFragment.show(ft, "yourTag");
)
}


@Override
updateText(String text) {
youtView.setText(text)
}
class CoolDialogFragment extend DialogFragment {

private Callback callback;


@Override
void onAttach(Context context) {
callback = (Callback) context
}

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Dialog dialog = new Dialog(getActivity());
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
return dialog;
}

@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.dialog_fragment_example, container, false);
}

@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
//find the views in the dialog fragment
closeBtn.clickListener(...
callback.updateText(edittext.getText().toString())
dismiss()
)
}
}

这是一个对话框 fragment 的要点 https://gist.github.com/cutiko/7e307efcf7492ea52ef05cd90f9e3203

问题是您想要将对话框 fragment 与另一个组件连接起来,并且想要直接进行。这不被认为是一个好的实践,因为会创建 2 个高度附加的组件,所以最好是使用数据持久性和某种形式的 react 编程

关于java - 如何将按钮连接到将在 FrameLayout 内使用用户输入编辑 TextView 的对话框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58244981/

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