Android - EditText在dialogfragment中不刷新

时间:2014-09-12 22:47:21

标签: java android android-fragments android-edittext android-dialogfragment

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

我正在使用dialogfragment来创建我的对话窗口MyDialog。该窗口应该显示我发送的分数,然后用户可以写下他们的名字并确认。然后我应该能够找回他们的名字。

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

第二个问题是,由于edittext没有更新,因此无法检索用户写入的文本。但是,可以检索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>

对话框窗口的图片:http://i.stack.imgur.com/EvwSe.png

我试过调用onResume()并将新分数放入。但edittext仍然没有改变。

我感谢任何答案,对任何不好的英语表示抱歉:)

1 个答案:

答案 0 :(得分:1)

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

另外,由于我们无法看到您在EditText中添加的实际数据,因此我们无法查看该数据是否为null等。

最后,我从未看到你运行了scoreEdit.getText(),所以你不会检索用户对edittext所做的任何更改。