在Android中实现一个简单的计数器

时间:2014-01-14 07:35:22

标签: android counter

我正在尝试实施一个计数器。将有一个显示计数的地方,以及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);

}

}

当我运行应用程序时,当我第二次点击时,它会突然停止(意外)。 谁能给一点帮助?谢谢你的时间!

1 个答案:

答案 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"