2014-02-26 163 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()); 
相关问题