Tia*_*goM 7 android text dialog set android-edittext
嗨,您好.我不知道发生了什么.我正在尝试更改EditText
创建文本时的文本DialogFragment
,但是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();
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,在该代码下方,在 onCreateDialog 方法结束之前,我有一些控制微调器的方法。
该微调器的第一项的目的是“不选择任何内容”,在该项目选择中,我只是删除了该编辑文本的内容,如下所示:
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int pos, long id) {
if(pos == 0){
if(editText.length() != 0 )
editText.setText("");
}
Run Code Online (Sandbox Code Playgroud)
而且我不知道在创建微调器时,它确实会触发事件“onItemSelected”,因此,即使我没有单击微调器的该项目,编辑文本每次都会被删除。所以
我设法通过简单的布尔值。每次 onCreateDialog 方法时,我都会将布尔值设置为 true,然后当该布尔值为 false 时,我的 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());
}
}
}
Run Code Online (Sandbox Code Playgroud)
我希望这对将来的人有帮助;)