Java setText使应用程序崩溃
我正在尝试制作一个应用程序,它有一个计数器,每当onStart函数实现时计数器都会增加Java setText使应用程序崩溃,java,android,Java,Android,我正在尝试制作一个应用程序,它有一个计数器,每当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.an
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);”使应用程序崩溃
如果有人能在这方面帮助我,我将不胜感激。这是因为count是一个int,而setText只接受字符串 试试这个:
DisplayText.setText(Integer.toString(count));
这是因为count是int,而setText只接受字符串 试试这个:
DisplayText.setText(Integer.toString(count));
首先,我建议您不要以大写字母开头变量名:
displayText
,而不是displayText
第二件事是,你不需要做:
count++;
DisplayText.setText(count);
++
的全部目的是缩短代码。只需使用DisplayText.setText(++count)
第三:onCreate
方法只有在您的活动第一次创建时才会被调用。当您的活动被销毁时,count
变量将消失。因此,您的计数器将始终显示1
最后,关于你的问题,我有点晚了,因为@Zino已经回答了。当您向TextView.setText()方法发送一个整数时,它认为它是一个字符串资源id,并尝试在资源之间查找它,如下所述:
在将整数值发送到setText方法之前,需要将其转换为字符串。以下是您的选择:
DisplayText.setText(Integer.toString(++count));
或
或
首先,我建议您不要以大写字母开头变量名:
displayText
,而不是displayText
第二件事是,你不需要做:
count++;
DisplayText.setText(count);
++
的全部目的是缩短代码。只需使用DisplayText.setText(++count)
第三:onCreate
方法只有在您的活动第一次创建时才会被调用。当您的活动被销毁时,count
变量将消失。因此,您的计数器将始终显示1
最后,关于你的问题,我有点晚了,因为@Zino已经回答了。当您向TextView.setText()方法发送一个整数时,它认为它是一个字符串资源id,并尝试在资源之间查找它,如下所述:
在将整数值发送到setText方法之前,需要将其转换为字符串。以下是您的选择:
DisplayText.setText(Integer.toString(++count));
或
或
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)
您现在正在使用第一个,因为您正在传递字符串id,这将引发异常,因为找不到字符串资源id
你需要这个
displayText.setText(String.valueOf(count));
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)
您现在正在使用第一个,因为您正在传递字符串id,这将引发异常,因为找不到字符串资源id
你需要这个
displayText.setText(String.valueOf(count));
只接受字符串?你在看文档吗?它接受
R.string
资源,这些资源是int@当然,它接受R.string资源,但这些是对charsequences的引用。对于他想做的事情,我认为可以说它为他的用例接受字符串。但你是对的,谢谢你澄清。只接受字符串?你在看文档吗?它接受R.string
资源,这些资源是int@当然,它接受R.string资源,但这些是对charsequences的引用。对于他想做的事情,我认为可以说它为他的用例接受字符串。但你是对的,谢谢你的澄清。