gpt4 book ai didi

java - Android - EditText 在对话框 fragment 中不刷新

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

这是我最后一次绝望地尝试解决这个问题。

我正在使用dialogfragment来制作我的对话框窗口MyDialog。该窗口应该显示我发送的分数,然后用户可以写下他们的名字并确认。然后我应该能够检索到他们的名字。

我的第一个问题是应该显示分数的 edittext 不想显示我设置 edittext 的分数(如果它位于 xml 文件中,它只会显示新文本)。然而,我仍然可以从同一个编辑文本中检索正确的分数(文本)。

第二个问题是,由于编辑文本没有更新,因此无法检索用户写入的文本。但是,可以检索 xml 文件中字段中的文本。

似乎 edittext 在 xml 文件中生成后不想刷新。

对话框类(取出的导入):

public class MyDialog extends DialogFragment 
{
private EditText scoreEdit;
private EditText userEdit;

private DialogClickListener callback;
public interface DialogClickListener
{
public void onFinishedClick();
}
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
try
{
callback = (DialogClickListener) getActivity();
}catch(ClassCastException e)
{
throw new ClassCastException("called class must implement interface");
}
}
public static MyDialog newInstance(int title)
{
MyDialog frag = new MyDialog();
Bundle args = new Bundle();
args.putInt("tittel",title);
frag.setArguments(args);
return frag;
}

@Override
public Dialog onCreateDialog(Bundle savedInstanceState)
{
AlertDialog.Builder dialog = new AlertDialog.Builder(getActivity());

LayoutInflater inflater = getActivity().getLayoutInflater();
View inflatedView = inflater.inflate(R.layout.dig_lay, null);
scoreEdit = (EditText) inflatedView.findViewById(R.id.dialogScoreEdit);
userEdit = (EditText) inflatedView.findViewById(R.id.dialogUsernameEdit);

scoreEdit.setText("score supposed to change");
// scoreEdit (edittext) is not changing

dialog.setView(inflater.inflate(R.layout.dig_lay, null));
dialog.setTitle("Title");
dialog.setPositiveButton("reg1", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int whichButton)
{
System.out.println("new text supposed to be: " + userEdit.getText().toString());
//old text from xml shows
callback.onFinishedClick();
}
});
setCancelable(false);
return dialog.create();
}
}

对话框窗口的 XML 文件:

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/dialogLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="16dp"
android:layout_marginLeft="4dp"
android:layout_marginRight="4dp"
android:layout_marginBottom="4dp">

<TextView
android:text="score"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<EditText
android:id="@+id/dialogScoreEdit"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:hint="score here"
android:inputType="none"/>
</LinearLayout>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="4dp"
android:layout_marginLeft="4dp"
android:layout_marginRight="4dp"
android:layout_marginBottom="16dp"
android:fontFamily="sans-serif">

<TextView
android:text="Username"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<EditText
android:id="@+id/dialogUsernameEdit"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="retrive this"
android:inputType="none"/>
</LinearLayout>
</LinearLayout>

对话框窗口的图片:/image/EvwSe.png

我尝试调用 onResume() 并将新分数放入。但编辑文本仍然没有改变。

我很感谢您的回答,并对任何不好的英语表示歉意:)

最佳答案

看起来有一些问题。我注意到的是,当您设置 View 时,您正在重新放大 View ,而不是将其设置为您在设置 View 时已经设置的 View dialog.setView(inflater.inflate(R.layout.dig_lay, null));你想将其设置为dialog.setView(inflatedView);

此外,由于我们看不到您放入 EditText 的实际数据,因此我们无法查看它是否可能为 null 等。

最后,我从未见过您运行 ScoreEdit.getText(),因此您不会检索用户对 edittext 所做的任何更改。

关于java - Android - EditText 在对话框 fragment 中不刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25817947/

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