我正在尝试创建一个具有计数器的应用程序,每次启动onStart函数时都会增加
package com.example.android.lifecycle;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import com.example.android.lifecycle.util.StatusTracker;
import com.example.android.lifecycle.util.Utils;
import static com.example.android.lifecycle.R.layout.activity_a;
public class ActivityA extends Activity{
private String mActivityName;
private TextView mStatusView;
private TextView mStatusAllView;
private StatusTracker mStatusTracker = StatusTracker.getInstance();
int count = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(activity_a);
mActivityName = getString(R.string.activity_a);
mStatusView = (TextView)findViewById(R.id.status_view_a);
mStatusAllView = (TextView)findViewById(R.id.status_view_all_a);
mStatusTracker.setStatus(mActivityName, getString(R.string.on_create));
Utils.printStatus(mStatusView, mStatusAllView);
TextView DisplayText = (TextView) findViewById(R.id.count_id);
count ++;
DisplayText.setText(count);
}
@Override
protected void onResume() {
super.onResume();
mStatusTracker.setStatus(mActivityName, getString(R.string.on_resume));
Utils.printStatus(mStatusView, mStatusAllView);
}
最后一行" DisplayText.setText(count);" 让应用崩溃 如果有人帮助我,我真的很感激。
答案 0 :(得分:4)
这是因为count是一个int,而setText只接受字符串。
试试这个:
DisplayText.setText(Integer.toString(count));
答案 1 :(得分:3)
首先,我建议您不要使用大写字母displayText
而不是DisplayText
启动变量名称。
第二件事是,你不需要这样做:
count++;
DisplayText.setText(count);
++
的重点是缩短代码。只需使用DisplayText.setText(++count)
。
第三:只有在首次创建活动时才会调用onCreate
方法。当您的活动被销毁时,您的count
变量将消失。因此,您的计数器将始终显示1
。
最后关于你的问题,我已经有点迟了,因为@Zino已经回答了。当您向TextView.setText()方法发送一个整数时,它认为它是一个字符串资源ID并尝试在资源之间找到它,如下所述:http://developer.android.com/reference/android/widget/TextView.html#setText(int)
在将整数值发送到setText方法之前,需要将整数值转换为字符串。您可以选择以下选项:
DisplayText.setText(Integer.toString(++count));
或
DisplayText.setText(String.valueOf(++count));
或
DisplayText.setText("" + ++count);
答案 2 :(得分:0)
setText有多个重载
// This takes a string id (R.string.hello).
// displayText.setText(R.string.hello);
setText (int resid)
// This takes a string in code.
// displayText.setText("Hello");
setText (CharSequence text)
您现在正在使用第一个,因为您传递了一个String ID,这将触发一个Exception,因为找不到字符串资源ID。
你需要这个
displayText.setText(String.valueOf(count));