意图把额外的总是null

时间:2018-05-05 18:05:23

标签: java android string android-intent null

所以我有3项活动:firstlog,解释,mapsactivity。当应用程序打开时,它会转到firstlog,然后解释mapactivity然后firstlog,当它在那里时,我希望它能够实现,以便当您从{{1它会将您转移到地图活动。所以我尝试传递一个值,然后使用共享首选项保存它,值始终为firstlog ...尝试在地图中保存null并在sharedpref中检查,始终为默认值。我在活动之间传递后尝试放firstlog,结果仍然相同。我尝试将finish()放入清单和同样的交易中。 这是我从地图

转到nohistory的代码
firstlog

这是我从Intent intent = new Intent(MapsActivity.this,FirstLog.class); intent.putExtra("EXTRA_SESSION_ID", 1); startActivity(intent);

返回地图的地方
firstlog

2 个答案:

答案 0 :(得分:0)

问题是,您传递Integer并尝试获取String老兄? 在获得额外的Int时使用它。

 int i = getIntent().getIntExtra("EXTRA_SESSION_ID");

你应该注意类型转换,因为android为不同的数据类型提供了不同的方法。

答案 1 :(得分:0)

问题是你在意图中传递 int 并检索字符串 您应该使用int s = getIntent().getIntExtra("EXTRA_SESSION_ID", defaultValue)代替

String s = getIntent().getStringExtra("EXTRA_SESSION_ID");

代码:

    SharedPreferences sharedPref = this.getSharedPreferences("isfirsttime", Context.MODE_PRIVATE);
    if(getIntent().hasExtra("EXTRA_SESSION_ID"){
            int s = getIntent().getIntExtra("EXTRA_SESSION_ID",1);
            if(s==1)
            {
                sharedPref.edit().putBoolean("isfirsttime",false);
                Log.i("firsttime","NOT FIRST TIME");
            }
            else
            {
                Log.i("firsttime","FIRST TIME");
                Log.i("firsttime","intent value equals: " + s);
            }
}
            if(sharedPref.getBoolean("isfirsttime",true)) {
                startActivity(new Intent(this, explanationscreen.class));
                finish();
            }
            else
            {
                startActivity(new Intent(this, MapsActivity.class));
                finish();
            }