嗨,您好.我不知道发生了什么.我在创建DialogFragment时尝试更改EditText的文本,但EditText不更新文本.
如果我调用getText().length()我注意到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只在该bolean为false时运行.像下面的代码:
@Override public void onItemSelected(AdapterView<?> parent,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()); } } }
我希望这有助于将来的某些人;)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。