无法在 DialogFragment 中将文本设置为 EditText

Cant set text to EditText in DialogFragment

我在 listview 行中有一个按钮,当我单击它时,我希望打开一个 dialogFragment 并将编辑文本(位于 dialogFragment 内)的文本设置为某个字符串。

问题是:应用到settext方法的那一行就关机了。

这是我用来打开 dialogFragment 并为其设置文本的代码。

public void onClick(View v) {
    FragmentManager manager = getFragmentManager();
    View parentRow = (View) v.getParent();
    ListView listView = (ListView) parentRow.getParent();
    final int position = listView.getPositionForView(parentRow);
    TrempData data = adapter.getItem(position); //from here im getting the data that i want to set to the edit text. 
    Addtremp trempDialog = new Addtremp();
    trempDialog.show(manager, "Addtremp");
    trempDialog.from.setText(data.get_from());
    trempDialog.to.setText(data.get_to());
    trempDialog.date.setText(data.get_date());
    trempDialog.time.setText(data.get_time());
    trempDialog.extra.setText(data.get_extras());
}

希望有人能帮助我。

谢谢。

您的应用肯定会因 NullPointerException 而崩溃。因为您正在尝试在尚未呈现的 UI 上设置数据。

应该遵循什么步骤?

  1. 将数据传递给 DialogFragment,它将以参数的形式显示在 UI 上。

  2. 创建回调,当 UI 在 Dialog 上呈现时会通知您。检查这个 Callback to a Fragment from a DialogFragment .在获得监听器后,您可以在 UI 组件上设置数据。

我个人更喜欢解决方案 1,为此您应该阅读 passing argument to DialogFragment