2013-03-30 3 views
7

안녕하세요. 나는 무슨 일이 일어나고 있는지 모른다. DialogFragment을 만들 때 EditText의 텍스트를 변경하려고 시도했지만 EditText이 텍스트를 업데이트하지 않습니다. getText().length()으로 전화하면 EditText의 내용이 변경되었습니다. 그러나 비주얼은 동일하고 비어 있습니다.Android EditText setText가 텍스트를 업데이트하지 않습니다.

왜? 사전 사람들이 여기에

에서

덕분에 코드입니다 :

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

이 글고 –

+0

을 didnt 도움 메이트에서 글꼴의 색상을 변경하려고 ..하지만 노력 – TiagoM

+1

주셔서 감사합니다 @DarkLink : 길이를 인쇄하는 대신'itemNameBox.getText(). toString()'을 인쇄하여 로그에 텍스트가 있는지 확인하십시오. –

답변

4

내 문제는 그 코드 아래, 그리고 방법이 onCreateDialog이 끝나기 전에, 내가 스피너를 제어하는 ​​몇 가지 방법이 있다고했다.

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

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

그리고 나는를 만드는 동안 것을 몰랐어요 :
그 회 전자의 첫 번째 항목은 "아무것도 선택하지"그 아이템의 선택에 난 그냥 같이, 그 텍스트를 편집의 내용을 삭제 한의 목적을 가지고 회 전자, 그것은 "onItemSelected"이벤트를 발생 시키므로 편집 문구는 회 전자의 해당 항목을 클릭하지 않아도 지워졌습니다.

그래서 나는 이것을 단순한 부울로 극복 할 수있었습니다. onCreateDialog 메서드를 사용할 때마다 부울을 true로 설정하고 내 onItemSelected는 해당 부울이 false 일 때만 작동합니다. 아래의 코드처럼
:

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

     } 
    } 


나는 이것이 미래에 누군가가 도움이되기를 바랍니다)

관련 문제