java.lang.RuntimeException:无法恢复活动API 17

时间:2014-12-28 11:32:39

标签: java android runtime-error numberformatexception

我只是一个简单的问题。

我在Android上正在研究我的项目,当我在我的三星s5 mini上尝试它时,没有任何错误。结果发送回我的第一项活动。

但是当我尝试在我的旧星系s2上运行我的项目时,我正面临着这个错误

    java.lang.RuntimeException: Unable to resume activity 

    Caused by: java.lang.RuntimeException: Failure delivering result
    ResultInfo{who=null, request=1, result=-1, data=Intent { 
    cmp=com.pullups.thomas.pullup/.Workout (has extras) }} to activity 
    {com.pullups.thomas.pullup/com.pullups.thomas.pullup.Workout}: 
    java.lang.NumberFormatException: Invalid int: ""

有人可以告诉我为什么它与我的galaxy s5 mini完美配合,但不能与我的Galaxy s2配合使用。

s5 mini在4.4.2上运行 galaxy s2在4.2.2上运行

2 个答案:

答案 0 :(得分:0)

这是我的第二个活动的代码(发送结果的人)我得到额外的,当用户点击按钮时我向compteurTimer添加+1并将其发送回第一个活动,所以它&#39 ; s显然不是空int,因为至少1是默认值

    Intent intent = getIntent();
    compteurTimer = intent.getExtras().getInt("compteurEntrainement",1);

    btn_passer.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            Intent workout = new Intent(CountDown.this, Workout.class);
            MyCount_DownTimer.cancel();

            compteurTimer++;

            workout.putExtra("compteurTimer", compteurTimer);

            setResult(RESULT_OK, workout);

            finish();
           }
    });

然后在第一个Activity中,我获得了onActivity结果代码

        @Override
protected void onActivityResult(int requestCode,int resultCode, Intent data){
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == 1 && resultCode == RESULT_OK && data != null ) {

        compteurEntrainement = data.getIntExtra("compteurTimer", 1);

        switch (compteurEntrainement){
            case 2:
                backColorDisplay(viewSerie2, viewSerie1, tabOfSeries[1]);
                break;
            case 3:
                backColorDisplay(viewSerie3, viewSerie2,tabOfSeries[2]);
                break;
            case 4:
                backColorDisplay(viewSerie4, viewSerie3,tabOfSeries[3]);
                break;
            case 5:
                backColorDisplay(viewSerie5, viewSerie4,tabOfSeries[4]);

                btnComplet.setText("TERMINÉ");
                btnComplet.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        final Intent pre_workout = new Intent(Workout.this, Pre_Workout.class);

                        setResult(RESULT_OK, pre_workout);

                        finish();
                    }//onClick
                });
                break;
            default:
                viewSerieEnCours.setText(viewSerie1.getText().toString());
                break;
        }//switch
    }//if
}//onActivityResult

我问的问题是,为什么这个代码在我的s5 mini上没有错误但在我的galaxy s2上无效。

现在我已将此添加到我的第一个活动

@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
    // Always call the superclass so it can save the view hierarchy state
    super.onSaveInstanceState(savedInstanceState);
}

在此之后,我没有出现任何错误,但是compteurTimer没有自行增加,所以我被困了

答案 1 :(得分:0)

一些提示:

您可以对结果Intent使用参数较少的构造函数:

Intent data = new Intent();  ///数据.....  setResult(Activity.RESULT_OK,data);  光洁度();

无需明确设置要用作投放的活动。

另外请确保您没有在其他地方调用完成,例如MyCount_DownTimer

确保排成一行:workout.putExtra("compteurTimer", compteurTimer);compteurTimer实际上属于int类型。