我想使用编辑文本中的用户输入,将其转换为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;
}
}
}
所以在输入后这就是它的样子 当我尝试在我的情况下使用我的输入(对于开关语句)得到“案例表达式必须是常量表达式”
答案 0 :(得分:2)
好吧,我注意到这一行的第一件事就是你试图给input
int
和Editable
。 display.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()
。