2013-03-30 19 views
7

Cześć. Nie wiem, co się dzieje. Próbuję zmienić tekst EditText podczas tworzenia DialogFragment, ale EditText nie aktualizuje tekstu. Jeśli zadzwonię pod numer getText().length(), zauważ, że zawartość EditText została zmieniona. Ale wizualne zachowuje się tak samo, po prostu puste.Android EditText setText nie aktualizuje tekstu

Dlaczego?

Dzięki z góry ludzi

Oto kod:

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(); 
    } 
} 
+2

spróbuj zmienić kolor czcionki w EditText –

+0

zrobił pomocy kolegi .. ale dzięki za wysiłek – TiagoM

+1

@DarkLink: zamiast drukować długość spróbuj wydrukować 'itemNameBox.getText(). ToString()' i sprawdź tekst w logu, czy nie –

Odpowiedz

4

Moim problemem było to, że pod tym kodem, a przed zakończeniem metoda onCreateDialog, miałem kilka metod sterowania tarczy.
Pierwszy element tego pokrętła ma na celu „wybierz nic” iw tym wyborze poz właśnie kasowanie zawartości tego tekstu edycji, podobnie jak to:

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

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

I nie wiedziałem, że podczas tworzenia spinner, uruchamia zdarzenie "onItemSelected" i dlatego edittext był za każdym razem wymazywany, nawet gdy nie kliknąłem na ten element spinnera.

Udało mi się to przezwyciężyć prostą boolowską. Za każdym razem, gdy metoda onCreateDialog ustawiam wartość logiczną na true, a następnie moja opcja onItemSelected będzie działać tylko wtedy, gdy ta wartość bobra jest równa false.
Podobnie jak w poniższym kodzie:

@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()); 
      } 

     } 
    } 


Mam nadzieję, że to pomoże komuś w przyszłości;)

Powiązane problemy