嗨,我正在研究android中的计算器。 我有一个编辑文本在wchich没有显示取决于特定编号的点击。例如,当用户按1它将显示1.当用户点击2时,它将显示12,依此类推。
我有这样的事情
public class Main extends Activity implements OnClickListener {
public static int no1=0,no2=0,op=0,flag=0;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
EditText display1=(EditText) findViewById(R.id.display);
Button one= (Button) findViewById(R.id.one);
one.setOnClickListener(this);
}
public void onClick(View v) {
if(v.getId()==R.id.one)
{
switch(flag)
{
case 1:no1*=10+1;display1.setText(no1);
case 2:no2*=10+1;display1.setText(no2);
}
}
但在这里我收到错误,因为“display1无法解析”。
任何使工作的解决方案.. ??
答案 0 :(得分:1)
因为它仅在您的onCreate方法中可用。将其声明为您班级中的一个字段。
private EditText display1;
答案 1 :(得分:1)
有时,完整的代码示例会有所帮助:
public class Main extends Activity implements OnClickListener {
private int no1=0;
private int no2=0;
private int op=0;
private int flag=0;
private EditText display1;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
display1=(EditText) findViewById(R.id.display);
Button one= (Button) findViewById(R.id.one);
one.setOnClickListener(this);
}
public void onClick(View v) {
if(v.getId()==R.id.one)
{
switch(flag)
{
case 1:no1*=10+1;display1.setText(no1);
case 2:no2*=10+1;display1.setText(no2);
}
}
}
基本上你想将display1声明为私有实例变量。其他变量不需要是静态的,并且应该被声明为private。并且声明在单独的行上格式化以提高可读性。
玩得开心。
答案 2 :(得分:0)
全局声明EditText和Button。
答案 3 :(得分:0)
最好在EditText中保留一个字符串,这样你就不会有任何附加和删除的困难。然后你可以将它解析成一个整数,这样你就可以用它做数学。
首先,您应该声明按钮并全局编辑文本:
public class Main extends Activity implements OnClickListener {
private EditText display1 = (EditText) findViewById(R.id.display);
private Button one= (Button) findViewById(R.id.one);
private Button two= (Button) findViewById(R.id.two);
如果您将按钮标签设置为数字,则可以使用它:
public void onClick(View view){
display1.setText(display1.getText.toString() + ((Button) view).getText().toString());
}
这样,您可以将数字附加到显示中字符串的末尾。如果要使用它显示的数字,可以使用以下代码:
int number = Integer.parseInt(display1.getText().toString());