2012-10-29 66 views
0

我正在嘗試編寫我的第一個Android應用。它將採用用戶在EditText字段中輸入的數字,將其轉換爲整數,然後查找這些因素。我想從我之前編寫的Java程序中移植它。我有存根工作的點,我有一個用戶界面,但我還沒有移植將查找因素的代碼。我試圖將EditText轉換爲整數。如果我插入以下任一行,則該程序在仿真器中崩潰。 Log.Cat說,「由NumberFormatExcepion引起:無法解析」作爲一個整數。「第一個Android應用 - 無法將EditText轉換爲整數值

任何建議表示讚賞。

userNumber是從EditText字段獲取的值的名稱,EditText字段也被命名爲userNumber。我不知道這是不是好的形式。我想將userNumber的值分配給整數值userInt。 userInt將被分解。

這些approaces的要麼會導致此問題:

userNumber = (EditText) findViewById(R.id.userNumber); 
userInt = Integer.parseInt(userNumber.getText().toString()); 


Integer userInt = new Integer(userNumber.getText().toString()); 

XML的EditText上塊看起來是這樣的:

<EditText 
    android:id="@+id/userNumber" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:ems="10" 
    android:inputType="number" > 

    <requestFocus /> 
</EditText> 

這裏是從類的相關代碼:

public class AndroidFactoringActivity extends Activity { 

// Instance Variables 
EditText userNumber; 
Button factorButton; 
TextView resultsField; 
int factorResults = 1; 
int userInt = 0; // This comes out if using Integer userInt 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    resultsField = (TextView) findViewById(R.id.resultsField); 
    factorButton = (Button) findViewById(R.id.factorButton); 
    userNumber = (EditText) findViewById(R.id.userNumber); 
       // userNumber is also the name of the EditText field. 

    // userInt = Integer.parseInt(userNumber.getText().toString()); 

    // Integer userInt = new Integer(userNumber.getText().toString()); 

    resultsField.append("\n" + String.valueOf(userInt)); 
       //Later, this will be factorResults, not userInt. 
       // Right now, I just want it to put something on the screen.  

} 
} 

回答

3

您試圖解析onCreate方法中的int,該方法出現在befor e用戶有機會輸入任何東西到EditText。因此,試圖解析空字符串的例外。

您必須先按下按鈕,然後才能從EditText中解析int,或者將偵聽器附加到EditText,以便在輸入內容時解析該偵聽器。

+0

Ralgha,謝謝。 –

+0

這工作。我很開心。 –