Android EditText setText不更新文本

你好。 我不知道发生了什么事。 我正在尝试在创建DialogFragment时更改EditText的文本,但EditText不更新文本。 如果我调用getText().length()我注意到EditText的内容改变了。 但是,视觉保持不变,只是空的。

为什么?

在此先感谢人

代码如下:

public class ItemNameDialog extends DialogFragment {
    @Override
    public Dialog onCreateDialog(final Bundle bundle) {
        System.out.println("ON CREATE DIALOG WAS CALLED");   //This appears on LogCat, so this method is called.. the problem is not that

        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        builder.setTitle("Configure an item to count:");

        LayoutInflater inflater = getActivity().getLayoutInflater();

        View view = inflater.inflate(R.layout.itempick_layout, null);
        builder.setView(view);

        final CheckBox box = (CheckBox) view.findViewById(R.id.itemSenseCheckBox);
        final EditText itemNameBox = (EditText) view.findViewById(R.id.itemNameText);
        final Spinner spinner = (Spinner) view.findViewById(R.id.itemsDefault);
        final int viewIDClicked = getArguments().getInt(clickableViewID);
        final String actualName = getArguments().getString(actualNameItemView);

        System.out.println("H - before: " + itemNameBox.getText().toString().length());    //it appears on logcat "H - before: 0"
        itemNameBox.setText(actualName);
        System.out.println("H - after: " + itemNameBox.getText().toString().length());   //it appears on logcat "H - before: 3"  so why not changing ?

        return builder.create();
    }
}

我的问题是,在代码下面,onCreateDialog方法结束之前,我有几个方法控制微调。
该微调器的第一个项目的目的是“不选择任何东西”,在那个项目选择中,我只是删除了该编辑文本的内容,如下所示:

@Override
public void onItemSelected(AdapterView<?> parent, View view,
                int pos, long id) {

if(pos == 0){
    if(editText.length() != 0 )
        editText.setText("");
}

我不知道在创建微调时,它确实会触发事件“onItemSelected”,因此,edittext每次都会被删除,即使当我没有点击微调项时也是如此。

所以我设法通过一个简单的布尔值来克服这个问题。 每次方法onCreateDialog我把布尔值为true,然后我的onItemSelected操作时,该布尔值为假。
像下面的代码一样:

@Override
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {

    if(firstGoingSpinner){
            firstGoingSpinner = false;

        }else{
            if(pos == 0){
                if(editText.length() != 0 )
                    editText.setText("");

            }else{
                editText.setText(""+parent.getItemAtPosition(pos));
                Editable etext = editText.getText();
                Selection.setSelection(etext, editText.length());
            }

        }
    }


我希望这能帮助未来的人;)

链接地址: http://www.djcxy.com/p/70487.html

上一篇: Android EditText setText not updating the text

下一篇: How to parse a OFX (Version 1.0.2) file in PHP?