1

我一直无法在我的 EditTexts 上设置初始输入。每当我传递一个包含来自先前活动的字符串的意图时,它都会导致强制关闭。

我的程序的主要要点是,先前的活动将包含字符串的意图发送到 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)
4

3 回答 3

1

如果receivedString未以确保其具有 2 个斜杠 ("/") 的方式进行格式化,则字符串数组separated将不会具有您需要的 3 个值。

这将导致一个IndexOutOfBoundsException.

编辑:

您必须使用反斜杠转义斜杠字符"\/"

于 2012-07-06T07:08:58.357 回答
0

首先初始化textView的后 setContentView(R.layout.lab2_082588birthday);为:

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 配对之前检查数组长度:

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+"");
}
于 2012-07-06T06:58:30.623 回答
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));
于 2012-07-06T07:08:43.453 回答