2014-02-26 168 views
0

我想輸入一個數字的edittext值並將其保存到一個int類型的變量中。我想在那之後對int int變量進行一些操作。 這是該代碼的一部分。如何獲取整數值並將其存儲到變量?

inputNum = Integer.parseInt(Input.getText()); 

它給我一個錯誤 - 在類型整數的方法parseInt函數(字符串)是不適用的論點。

我需要存儲在的EditText輸入到可變inputNum是一個整數類型.. 我的全部代碼的數值

package com.shukla.rahul.mycalculator; 

import android.os.Bundle; 
import android.app.Activity; 
import android.view.Menu; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 

public class MainActivity extends Activity { 

TextView Display; 
EditText Input; 
Button X2, X3, Clear; 
int result; 
String Over = "Stopped"; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    //a = 1; 
    //int inputNum = Integer.parseInt(Input.getText().toString()); 
    X2 = (Button) findViewById(R.id.bX2); 
    X3 = (Button) findViewById(R.id.bX3); 
    Clear = (Button) findViewById(R.id.bClear); 
    Input = (EditText) findViewById(R.id.etUserinput); 
    Display = (TextView) findViewById(R.id.tvDisplay); 
    X2.setOnClickListener(new View.OnClickListener() { 
     int inputNum = Integer.parseInt(Input.getText().toString()); 
     @Override 
     public void onClick(View v) { 
      if (inputNum <= 10) { 
       result = inputNum * 2; 
       Display.setText("2 X " + inputNum + " = " + result); 
       inputNum++; 
      }else Display.setText("" + Over); 
     } 
    }); 
    X3.setOnClickListener(new View.OnClickListener() { 
     int inputNum = Integer.parseInt(Input.getText().toString()); 
     @Override 
     public void onClick(View v) { 
      if (inputNum <= 10) { 
       result = inputNum * 3; 
       Display.setText("3 X " + inputNum + " = " + result); 
       inputNum++; 
      }else Display.setText("" + Over); 
     } 
    }); 
    Clear.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      result = 0; 
      //int inputNum = 1; 
      Display.setText("" + result); 
     } 
    }); 
} 
} 

我不知道,以我應該在哪裏,就把這行的代碼

int inputNum = Integer.parseInt(Input.getText().toString()); 

和我應該在哪裏申報inputNum variable..eclipse顯示沒有錯誤。但應用程序一點兒也不啓動..

+2

嘗試'inputNum =的Integer.parseInt(輸入.getText()。toString());' – codeMagic

+0

嘿,我編輯了我的答案,以解決你修改後的問題.. –

回答

1

假設你有一些編輯短信:

EditText edit = (EditText) mLayout.findViewById(R.id.user_edit); 

你會做到以下幾點:

String val = edit.getText().toString(); 
int value = Integer.valueOf(val); 

編輯:

您有:

X2.setOnClickListener(new View.OnClickListener() { 
     int inputNum = Integer.parseInt(Input.getText().toString()); 
     @Override 
     public void onClick(View v) { 
      if (inputNum <= 10) { 
       result = inputNum * 2; 
       Display.setText("2 X " + inputNum + " = " + result); 
       inputNum++; 
      }else Display.setText("" + Over); 
     } 
    }); 

你需要移動:

int inputNum = Integer.parseInt(Input.getText().toString()); 

因此該方法是這樣的:

X2.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       int inputNum = Integer.parseInt(Input.getText().toString()); 
       if (inputNum <= 10) { 
        result = inputNum * 2; 
        Display.setText("2 X " + inputNum + " = " + result); 
        inputNum++; 
       }else Display.setText("" + Over); 
      } 
     }); 
+0

您建議將此代碼放置在哪裏?因爲我應用了這種邏輯,應用程序崩潰時給我一個消息,說明你的應用程序在自我啓動時已停止。 – Rahul

+0

編輯解決。將此更改應用於您需要使用此值的任何點擊監聽器。 –

+0

它的工作! Gr8幫助 – Rahul

3

因爲EditText.getText()返回Editable,而不是String你得到一個錯誤,並且Integer.parseInt(String s)需要String作爲參數。

嘗試:

// etInput is an EditText 
int inputNum = Integer.valueOf(etInput.getText().toString()); 

在這種情況下,你是轉換可編輯爲String,因此可以對其進行解析。

+1

這可能是最好的,因爲它解釋了getText()返回可編輯。我們都處理這個問題,但是這實際上明確地表述了它。 –

+0

我應用了您建議的代碼行,並且它可能也適用,因爲沒有發現錯誤。但是當我嘗試運行應用程序..它的崩潰和一個消息彈出說你的應用程序已停止..我認爲我想存儲edittext的值的變量的聲明是不正確的。我的意思是放置的變量..這裏是我的完整代碼。 – Rahul

+0

嗨菲利普我已經編輯了我的代碼。該應用在發佈時停止。 – Rahul

0

假設InputEditText類型,那麼你要做的:

inputNum = Integer.parseInt(Input.getText().toString()); 
相關問題