2012-09-14 44 views
0

我有一個可以在我的PC應用程序上運行的代碼,但是當我將它轉換爲Android應用程序時,它告訴我我在setText方法中有錯誤。EditText.setText上的Android運行時錯誤

((EditText) findViewById(R.id.editText2)).addTextChangedListener(new TextWatcher() { 

    public void afterTextChanged(Editable arg0) { 
     EditText width = (EditText) findViewById(R.id.editText1); 
     EditText height = (EditText) findViewById(R.id.editText2); 

     System.out.println("editText2: " + width.getText() + " " + height.getText()); 

     try { 
      double _width = Math.round((Double.parseDouble(height.getText() + "")/IMAGE_HEIGHT) * IMAGE_WIDTH); 
      String value = String.valueOf(_width).substring(0, String.valueOf(_width).lastIndexOf(".")); 
      width.setText(value); 
     } catch(Exception e) { 

     } 

    } 

    public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {} 
    public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {} 

}); 

如果我說width.setText(value),我得到一個AndroidRuntime錯誤。那有什麼問題? IMAGE_WIDTHIMAGE_HEIGHT因圖像而異,我檢查過它們在使用前已初始化。

+1

發佈logcat異常堆棧。 – kosa

+0

*寬度*在崩潰時的值是多少?它是* null *? (調試器和logcat都會證實這一點)這是分享的重要信息。這意味着在這個特定的內容視圖上沒有editText1。 –

回答

2

的問題是,我已經設置的EditText只接受數值。在代碼中,我插入了一個字符串。我不得不將字符串更改爲一個整數來使其工作。

0

可能你做了一個跨線程訪問。你需要調用這些調用。您需要使用Handler。另見AsyncTask

創建一個Handler並調用.post()帶有一個可爲您設置文本的runnable。

0

你需要做的是這樣

String value = width.getText().toString(); 

然後就叫

setText();