我在EditTexts上设置初始输入时遇到了问题。每当我传递一个包含前一个活动的字符串的意图时,它就会导致强制关闭。
我的程序的主要要点是,先前的活动将包含字符串的intent发送到editText活动。如果它未初始化,则editTexts为空,否则,它们包含上一屏幕中TextView中显示的值。这是我的代码:
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);
}
}
这是我的 LogCat
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)
答案 0 :(得分:1)
如果receivedString
的格式不是确保它有2个斜杠(“/”),则字符串数组separated
将不具有您需要的3个值。
这将产生IndexOutOfBoundsException
。
修改强>
您必须使用反斜杠"\/"
来转义斜杠字符。
答案 1 :(得分:0)
首先初始化textView
setContentView(R.layout.lab2_082588birthday);
as:
month = (TextView)findViewById(R.id.month);
day = (TextView)findViewById(R.id.day);
month = (TextView)findViewById(R.id.year);
然后将Integer
值设为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));
之后提供logcat: 在将String转换为int之前检查数组lenth :
if(separated.length >0)
{
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+"");
}
答案 2 :(得分:0)
你必须改变这一行
month.setText(stringMonth);
day.setText(stringDay);
year.setText(stringDay);
by 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));