如何使用和编辑文本输入作为交换机的int

时间:2011-09-13 18:57:47

标签: android android-edittext switch-statement

我想使用编辑文本中的用户输入,将其转换为int并在我的开关语句中使用它

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.text.Editable;
import android.text.InputType;
import android.view.Display;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ToggleButton;

public class MainScreen extends Activity implements View.OnClickListener {
    Button convert;
    Button erase;
    EditText display;
    ToggleButton switcher;
    int input;



@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);


             pause.start();
    // Calls my variables
    InitializeVars();
}

// SLEEP 2 SECONDS HERE ...
Thread pause = new Thread() {
    public void run() {
        try {
            Thread.sleep(2000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

};

// My variables
private void InitializeVars() {
    // TODO Auto-generated method stub
    convert = (Button) findViewById(R.id.bConvert);
    erase = (Button) findViewById(R.id.bErase);
    display = (EditText) findViewById(R.id.etDisplay);
    display.setInputType(InputType.TYPE_CLASS_NUMBER);
    switcher = (ToggleButton) findViewById(R.id.tbSwitch);

    switcher.setOnClickListener(this);
    convert.setOnClickListener(this);
    erase.setOnClickListener(this);

}

// My functions for anything that is clickable embedded with a switch
// statement
public void onClick(View v) {
    // TODO Auto-generated method stub
    switch (v.getId()) {
    case R.id.tbSwitch:
        if (switcher.isChecked()) {
            display.setText("Text1");
        } else {
            display.setText("Text2");
        }
        break;
    case R.id.bErase:
        display.getText().clear();
        break;
    case R.id.bConvert:
        input = Integer.getInteger(display.getText().toString());
        input = (input / 10);
        switch (input) {
            case input = 10:
        }
        break;
    default:
        break;
    }
}

}

所以在输入后这就是它的样子 当我尝试在我的情况下使用我的输入(对于开关语句)得到“案例表达式必须是常量表达式”

2 个答案:

答案 0 :(得分:2)

好吧,我注意到这一行的第一件事就是你试图给input intEditabledisplay.getText()返回一个可编辑对象。我想你真正想要的是

input = Integer.parseInt(display.getText().toString());

由于parseInt()将抛出 NumberFormatException ,因此您可能希望实现try / catch块来捕获任何非整数的输入。它将使您的应用程序更加健壮。

至于你的主题。你不要在任何地方打电话。这很好,但无论你需要什么,你都必须打电话给pause.start(),尽管它真的没必要。在这方面,我同意邪恶总统的意见。

答案 1 :(得分:0)

display.getText()将返回一个String,而不是一个int,这是你声明为input的那个。你需要调用input = Integer.parseInt(display.getText().toString())并处理任何可能抛出的异常(我不记得了。)

您的Thread代码是正确的,但永远不会被调用。只需在任何需要的地方调用Thread.sleep(2000),您最好不要将其包裹在Thread中(但您仍然需要捕获InterruptedException)。但是,如果您想保持原样,则需要致电pause.start()