這是我最後一次絕望的嘗試來解決這個問題。Android - EditText dosen't刷新對話框片段
我使用dialogfragment使我的對話窗口MyDialog。該窗口應顯示我發送的分數,然後用戶可以用他們的姓名填寫並確認。那麼我應該能夠找回他們的名字。
我的第一個問題是,應該顯示分數的edittext,不想顯示我設置edittext的分數(它只會顯示新文本,如果它在xml文件中)。然而,我仍然可以從相同的編輯文本中檢索正確的分數(文本)。
第二個問題是由於edittext沒有更新,用戶寫入的文本無法被檢索。但是,可以檢索xml文件在字段中的文本。
看起來edittext在xml文件中生成後不想刷新。
對話框類(採取進口OUT):
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>
的dialogwindow的畫面:http://i.stack.imgur.com/EvwSe.png
我已經打過電話的onResume ()並放入新的分數,但edittext仍然不會改變。
我欣賞的任何不良英語作回答,抱歉:)
您是否嘗試過在更改內容後在edittex上調用invalidate()? – marino 2014-09-12 22:58:22
嗨,thx回答:)我只是這樣做:\t \t scoreEdit.setText(「應該改變分數」); scoreEdit.invalidate(); System.out.println(scoreEdit.getText()。toString()); 但我沒有看到窗口中的任何變化,只有在system.out.println() – Madde 2014-09-12 23:04:51