我正在尝试实施一个计数器。将有一个显示计数的地方,以及2个按钮(++& - )。
<EditText
android:id="@+id/Edittext1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="text"
android:text="@string/cero" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/Edittext1"
android:layout_below="@+id/Edittext1"
android:layout_marginTop="16dp"
android:onClick="onClick"
android:text="@string/mas" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/button1"
android:layout_toRightOf="@+id/button1"
android:layout_marginTop="16dp"
android:onClick="onClick"
android:text="@string/menos" />
但它不起作用。我是Android的新手,我不明白我做错了什么。
public class MainActivity extends Activity implements OnClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//View boton1 = findViewById(R.id.button1);
//boton1.setOnClickListener(this);
//View boton2 = findViewById(R.id.button2);
//boton2.setOnClickListener(this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public void onClick(View v) {
TextView texto = (TextView) findViewById(R.id.Edittext1);
int n = Integer.parseInt(texto.getText().toString());
switch(v.getId())
{
case R.id.button1: texto.setText("case1");
n++;
break;
case R.id.button2: texto.setText("case2");
n--;
break;
default: texto.setText("default");
}
texto.setText(n);
}
}
当我运行应用程序时,当我第二次点击时,它会突然停止(意外)。 谁能给一点帮助?谢谢你的时间!
答案 0 :(得分:3)
texto.setText(n);
这是你的错。 n
是一个int值。 setText查找具有id的资源。如果没有找到,你会得到ResourceNotFoundException
。
您使用此public final void setText (int resid)
代替public final void setText (CharSequence text)
http://developer.android.com/reference/android/widget/TextView.html
更改为
texto.setText(String.valueOf(n));
另外
EditText text0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
texto = (EditText) findViewById(R.id.Edittext1);
http://developer.android.com/reference/android/widget/TextView.html
虽然将edittext转换为textview不是问题,但我建议您更改为texto = (EditText) findViewById(R.id.Edittext1);
每次点击按钮都无需初始化edittext。
同时删除implements OnClickListener
因为您有android:onClick="onClick"