Java 数字文本字段上的setText将强制关闭应用程序
我在设置编辑文本的初始输入时遇到了问题。每当我传递包含前一个活动中的字符串的意图时,它都会导致强制关闭 我的程序的主要要点是,前一个活动向editText活动发送包含字符串的意图。如果未初始化,EditText为空,否则,它们包含上一屏幕的TextView中显示的值。这是我的密码:Java 数字文本字段上的setText将强制关闭应用程序,java,android,string,split,Java,Android,String,Split,我在设置编辑文本的初始输入时遇到了问题。每当我传递包含前一个活动中的字符串的意图时,它都会导致强制关闭 我的程序的主要要点是,前一个活动向editText活动发送包含字符串的意图。如果未初始化,EditText为空,否则,它们包含上一屏幕的TextView中显示的值。这是我的密码: EditText month, day, year; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-
EditText month, day, year;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.lab2_082588birthday);
Intent startUp = getIntent();
String receivedString = startUp.getStringExtra(Lab2_082588part2.BIRTHDAY_STRING);
if(receivedString.trim().length() > 0){
String[] separated = receivedString.split("/");
int stringMonth = Integer.parseInt(separated[0]);
int stringDay = Integer.parseInt(separated[1]);
int stringYear = Integer.parseInt(separated[2]);
month.setText(stringMonth);
day.setText(stringDay);
year.setText(stringDay);
}
}
这是我的日志猫
07-06 15:05:19.918: E/AndroidRuntime(276): Caused by: java.lang.NullPointerException
07-06 15:05:19.918: E/AndroidRuntime(276): at com.android.rondrich.Lab2_082588birthday.onCreate(Lab2_082588birthday.java:34)
07-06 15:05:19.918: E/AndroidRuntime(276): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
07-06 15:05:19.918: E/AndroidRuntime(276): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
首先初始化textView的
setContentView(R.layout.lab2082588第28天)代码>作为:
month = (TextView)findViewById(R.id.month);
day = (TextView)findViewById(R.id.day);
month = (TextView)findViewById(R.id.year);
month.setText(stringMonth+"");
day.setText(stringDay+"");
year.setText(stringDay+"");
然后将Integer
值设置为TextView
,如下所示:
month = (TextView)findViewById(R.id.month);
day = (TextView)findViewById(R.id.day);
month = (TextView)findViewById(R.id.year);
month.setText(stringMonth+"");
day.setText(stringDay+"");
year.setText(stringDay+"");
或
如后所述,提供logcat:
在将字符串配对为int之前检查数组长度
:
首先初始化textView的
setContentView(R.layout.lab2082588第28天)代码>作为:
month = (TextView)findViewById(R.id.month);
day = (TextView)findViewById(R.id.day);
month = (TextView)findViewById(R.id.year);
month.setText(stringMonth+"");
day.setText(stringDay+"");
year.setText(stringDay+"");
然后将Integer
值设置为TextView
,如下所示:
month = (TextView)findViewById(R.id.month);
day = (TextView)findViewById(R.id.day);
month = (TextView)findViewById(R.id.year);
month.setText(stringMonth+"");
day.setText(stringDay+"");
year.setText(stringDay+"");
或
如后所述,提供logcat:
在将字符串配对为int之前检查数组长度
:
你必须换这条线
month.setText(stringMonth);
day.setText(stringDay);
year.setText(stringDay);
bcz stringMonth、stringDay等都是整数,您必须在textview中以这种方式进行设置
month.setText(""+stringMonth);
day.setText(""+stringDay);
year.setText(""+stringDay);
另一种方式是
month.setText(String.valueOf(stringMonth));
day.setText(String.valueOf(stringDay));
year.setText(String.valueOf(stringDay));
你必须换这条线
month.setText(stringMonth);
day.setText(stringDay);
year.setText(stringDay);
bcz stringMonth、stringDay等都是整数,您必须在textview中以这种方式进行设置
month.setText(""+stringMonth);
day.setText(""+stringDay);
year.setText(""+stringDay);
另一种方式是
month.setText(String.valueOf(stringMonth));
day.setText(String.valueOf(stringDay));
year.setText(String.valueOf(stringDay));
如果receivedString
的格式不能确保它有两个斜杠(“/”),则字符串数组分隔的
将不会有您需要的3个值
这将导致出现IndexOutOfBoundsException
编辑:
必须用反斜杠转义斜杠字符“\/”
如果接收字符串的格式未确保其具有两个斜杠(“/”),则字符串数组分隔的将不具有所需的3个值
这将导致出现IndexOutOfBoundsException
编辑:
你必须用反斜杠转义斜杠字符“\/”
我们这里不是魔术师,没有任何代码和错误跟踪。我们什么都不能说。我想你忘了粘贴代码了。你说:这是我的代码这是我的代码你的代码在哪里???对不起,在标签区不小心按了回车键看我的答案,也在评论中..我们在这里不是魔术师,没有任何代码和错误跟踪。我们什么都不能说。我想你忘了粘贴代码了。你说:这是我的代码这是我的代码你的代码在哪里???对不起,不小心在标签区域按了回车键看我的答案,也在评论中..我已经考虑过了。先前的活动已将receivedString初始化为“00/00/0000”。您的日志显示错误发生在第34行。代码中是哪一行?int-stringMonth=Integer.parseInt(分隔为[0]);这个你必须用反斜杠转义斜杠字符,我已经考虑过了。先前的活动已将receivedString初始化为“00/00/0000”。您的日志显示错误发生在第34行。代码中是哪一行?int-stringMonth=Integer.parseInt(分隔为[0]);你必须用反斜杠“\/”
转义斜杠字符,我明白了,问题是我在将数组赋给字符串之前忘记了输入if语句。我真傻。非常感谢你!我也尝试过很多次,但当我使用split(“/”)在“/”字符串的基础上拆分字符串时,字符串不会在数组中溢出。因此,请尝试使用其他Saperator或split(“\/”)或split regex将字符串拆分到数组。Woops,对不起,imran先生。第一次在这里。我以为勾选是为了多个答案。你的建议奏效了。谢谢,sirI,问题是在将数组赋给字符串之前,我忘了输入if语句。我真傻。非常感谢你!我也尝试过很多次,但当我使用split(“/”)在“/”字符串的基础上拆分字符串时,字符串不会在数组中溢出。因此,请尝试使用其他Saperator或split(“\/”)或split regex将字符串拆分到数组。Woops,对不起,imran先生。第一次在这里。我以为勾选是为了多个答案。你的建议奏效了。谢谢你,先生