2013-03-05 91 views
0

我有一個很容易解決的問題,但我無法在Internet上看到任何教程來幫助我。因爲這個問題很基本,所以我認爲我沒有使用正確的關鍵字來進行搜索。用戶點擊後解析EditText輸入

我的問題是我解析EditText用的方法和使用此方法來供給的曲線圖的值:

public int getSetPoint(){ 
    int setPointRequest = Integer.parseInt(txtSetPoint.getText().toString()); 
    if (setPointRequest > 90 && setPointRequest < 120); 
     return setPointRequest; 
    // ... 
} 

我想解析值僅當setPointRequest()具有91之間的值119並在用戶按下在鍵盤上輸入。當提示用戶輸入一個數值時,只有數字顯示在鍵盤上。

當前用戶輸入的所有值即使他沒有擊中輸入已註冊在圖上。

感謝您的幫助! 數學

回答

0
public int getSetPoint(){ 
    int setPointRequest = Integer.parseInt(txtSetPoint.getText().toString()); 
    if(setPointRequest>90 && setPointRequest<120) //notice the lack of ; 
    return setPointRequest; 

    return -1; 
} 

要處理一個回車鍵:

txtSetPoint.setOnEditorActionListener (new OnEditorActionListener() { 
    @Override 
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) 
    { 
    if (actionId == EditorInfo.IME_NULL) 
     getSetPoint(); 
    return true; 
    } 
}); 

你的第一個問題是if之後的分號。刪除。

第二個問題是,在你解決這個問題之後,你將會得到一個編譯時錯誤,因爲你需要一個默認的return語句(可以保證執行以防if不行)。我用-1,你可以根據你的需要定製它。我也會把解析放在try/catch中,以避免任何奇怪的錯誤,但這取決於你。

另外,命名不好,getSetPoint()沒有立即從名稱中清除,但返回類型和缺少參數確實給出了一個粗略的想法。

+0

此解決方案使我的應用程序崩潰,並沒有幫助我與鍵盤上的「輸入」我問。你能否詳細說明這個解決方案? – Mathieu660 2013-03-05 00:25:58

+0

@ Mathieu660然後發佈你如何調用這個方法。由於'-1'(默認值)被返回,所以很可能會崩潰,而且您不會重新驗證輸入。至於處理輸入按鍵,你會想要閱讀[this](http://stackoverflow.com/questions/1489852/android-handle-enter-in-an-edittext)的答案。但是,您應該製作一個按鈕,它更清晰*,*它可以讓您輕鬆處理提交。 – 2013-03-05 00:28:30

+0

實際上我輸入了另一個值,因爲-1當然會崩潰我的圖形。我用了98,但仍然崩潰了我的應用程序。 setPointValue.add(getSetPoint());它被稱爲那裏,它是一個數組 – Mathieu660 2013-03-05 00:36:32

0

結合A - C所說的,我們爲您的EditText設置了setOnKeyListener,以便在用戶點擊回車鍵時它將只顯示文本。

public int getSetPoint(){ 
    int setPointRequest = Integer.parseInt(txtSetPoint.getText().toString()); 
    if(setPointRequest>90 && setPointRequest<120) 
    {return setPointRequest;} 

    else {return -1;} 
} 

txtSetPoint.setOnKeyListener(new OnKeyListener(){ //this method waits for the enter key to be hit 

@Override 
public boolean onKey(View arg0, int arg1, KeyEvent arg2) { 

    switch(arg1) 
    { 
      case KeyEvent.KEYCODE_ENTER: 
       getSetPoint(); //when enter key is hit, call the getSetPoint method 
       return true; 
      default: 
       return false; 

    } 

    } 
});