Android EditText setText не обновляет текст
Привет. Я не знаю, что происходит. Я пытаюсь изменить текст 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();
}
}
1 ответов
моя проблема заключалась в том, что ниже этого кода, и прежде чем метод onCreateDialog заканчивается, у меня было несколько методов управления spinner.
Первый элемент этого spinner имеет цель "выбрать ничего", и в этом выборе элемента я просто стирал содержимое этого текста редактирования, например:
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int pos, long id) {
if(pos == 0){
if(editText.length() != 0 )
editText.setText("");
}
и я не знал, что при создании spinner он запускает событие "onItemSelected", и из-за этого edittext каждый раз стирался, даже когда я не нажимал на этот предмет прядильщика..
Поэтому мне удалось преодолеть это простым булевым.
Каждый раз, когда метод onCreateDialog я ставлю boolean в true, а затем мой onItemSelected просто работает, когда это bolean ложно.
как код ниже:
@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());
}
}
}
Я надеюсь, это поможет кому-то в будущем ;)