2014-02-21 85 views
1

我無法從EdiText(edText)獲取整數值。我不知道爲什麼會出現這個問題。執行Catch下的部分而不是Try無法從EditText獲取整數值

public class Ybus_Activity extends Activity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_ybus); 
     //Creating Linear Layout 
     final LayoutParams params = new LayoutParams(LayoutParams.FILL_PARENT, 
       LayoutParams.WRAP_CONTENT); 
     final LinearLayout main = (LinearLayout)findViewById(R.id.android_main_layout); 
     //Creating TextView 
     TextView getData=new TextView(this); 
     getData.setText("Enter the number of LineData : "); 
     getData.setId(5); 
     getData.setLayoutParams(params); 
     main.addView(getData); 
     //Creating EdiText 
     final EditText edText = new EditText(this); 
     edText.setId(3); 
     edText.setLayoutParams(params); 
     edText .setWidth(100); 
     edText .setImeOptions(EditorInfo.IME_ACTION_NEXT); 
     edText .setInputType(InputType.TYPE_CLASS_NUMBER); 
     edText .setKeyListener(DigitsKeyListener.getInstance()); 
     edText .setMaxLines(1); 
     main.addView(edText); 
     final String ed=edText.getText().toString(); 
     //Creating Button for displaying integer from edText 
     Button bt = new Button(this); 
     bt.setText("Click to enter Linedata"); 
     bt.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); 
     main.addView(bt); 
     final TextView text = new TextView(this); 
     bt.setOnClickListener(new View.OnClickListener() 
     { 
      public void onClick(View v) 
      { 
       int i = 0; 
       try{ 
        i =Integer.parseInt(ed); 
        text.setText(i); 
       }catch(NumberFormatException ex){ 
        text.setText("Value at TextView is not a valid integer"); 
       } 
      } 
     }); 
     main.addView(text); 
    } 
} 
+0

爲什麼ü從edText中的onCreate獲取文本,應該不是很在的onClick方法? – pepela

+0

@pepela不,它必須在onClick()...這是我犯的錯誤...現在解決了... – gkn06

回答

1

嗨,你可以使用一個字符串在TextView的顯示,所以你可以做如下

 bt.setOnClickListener(new View.OnClickListener() 
     { 
      public void onClick(View v) 
      { 
       String ed=edText.getText().toString(); 
       int i = 0; 
       try{ 
        i =Integer.parseInt(ed); 
       //setting value here 
       text.setText(String.valueof(i)); 
       //or you can do like this 
       // text.setText(i+""); 
       }catch(NumberFormatException ex){ 
        text.setText("Value at TextView is not a valid integer"); 
       } 
      } 
     }); 
+0

我用這個...但仍然得到錯誤...這是catch語句「在TextView中的值不是一個有效的整數」正在執行 – gkn06

+0

我更新了答案,請看看! –

+0

兄弟...非常感謝你...這是工作...你能解釋一下這個... – gkn06

1

轉換intString顯示內容爲TextView。這是因爲setText(CharacterSequence)已設置CharacterSequence

text.setText(String.valueof(i)); 

實現你的按鈕點擊監聽器是這樣的:

bt.setOnClickListener(new View.OnClickListener() 
{ 
public void onClick(View v) 
{ 
int i = 0; 
try{ 
    String ed=edText.getText().toString(); 
    i =Integer.parseInt(ed); 
    text.setText(String.valueOf(i); 

}catch(NumberFormatException ex){ 
    text.setText("Value at TextView is not a valid integer"); 
    } 
} 
}); 
+0

@MD,但我需要整數值... – gkn06

1

移動這個String ed=edText.getText().toString();

bt.setOnClickListener(new View.OnClickListener() 
{ 
public void onClick(View v) 
{ 
    int i = 0; 
    try{ 
     String ed=edText.getText().toString(); 
     i =Integer.parseInt(ed); 
     text.setText(String.valueOf(i)); 
    }catch(NumberFormatException ex){ 
     e.printStacktrace(); 
    } 
} 
}); 

內按鈕點擊收聽

而且setText(int)(i是一個int值I)使用提到的id查找資源。如果沒有找到,你會得到ResourceNotFOundException。而是使用setText(CharacterSequence),而您需要使用text.setText(String.valueOf(i));

0

這串:

text.setText(i+""); 

並獲得int值

int a = Integer.parseInt(text.getText().toString()); 
0

您改變了行:

i =Integer.parseInt(ed); 
text.setText(i); 

到:

i = Integer.parseInt(edText.getText().toString()); 
text.setText(i+"");