Java 意图放额外总是空的

Java 意图放额外总是空的,java,android,string,android-intent,null,Java,Android,String,Android Intent,Null,所以我有3个活动:firstlog,解释,mapsacActivity。当应用程序打开时,它会转到firstlog然后是解释,然后是mapactivity然后是firstlog,当它在那里时,我希望它能使你从firstlog转到maps activity。所以我尝试只传递一个值,然后用共享首选项保存它,值总是null。。。已尝试在地图中保存SharedRef,并在firstlog中将其选中,始终为默认值。我尝试在活动之间传递后放置finish(),结果仍然相同。我试着把nohistory放在清单

所以我有3个活动:
firstlog
,解释,
mapsacActivity
。当应用程序打开时,它会转到
firstlog
然后是解释,然后是
mapactivity
然后是
firstlog
,当它在那里时,我希望它能使你从
firstlog
转到maps activity。所以我尝试只传递一个值,然后用共享首选项保存它,值总是
null
。。。已尝试在地图中保存
SharedRef
,并在
firstlog
中将其选中,始终为默认值。我尝试在活动之间传递后放置
finish()
,结果仍然相同。我试着把
nohistory
放在清单中,做同样的交易。 这是我从“地图”转到
firstlog
的代码

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

    SharedPreferences sharedPref = this.getSharedPreferences("isfirsttime", Context.MODE_PRIVATE);
    String s = getIntent().getStringExtra("EXTRA_SESSION_ID");
    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();
    }

问题是,您正在传递一个
整数
并试图获取
字符串
dude? 在获取Int-extra时使用此选项

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

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

问题是您正在传递int,并检索字符串 您应该使用
int s=getIntent().getIntExtra(“额外会话ID”,defaultValue)
而不是

String s = getIntent().getStringExtra("EXTRA_SESSION_ID");
代码:


即使使用getIntExtra?也尝试一个接一个地复制代码,但确实有效,但这只是因为您将默认值设置为1,该值应为0,因为1是从“映射”活动传递的值。当我把它改为0时,我看到它总是0。我试着在oncreate函数中检查它,同样的事情(这段代码保存在一个按钮侦听器中)不应该是其他代码的问题,因为我试着先检查它,然后在其他活动中发送数据。我想我遗漏了某个步骤…默认值用于避免空指针异常。您可以将其更改为0或-1,并且您应该共享其他活动中的更多代码,以便我们可以在您上面的其他活动中发布更多代码来解决问题。但放一个的问题是,当我来自上面的mapsactivity代码时,我只想要一个。好的,如果你只想来自MapActivity,你应该把所有这些代码放在一个if块中,如果(getIntent().hasExtra(“EXTRA_SESSION_ID”),那么你的代码或流中肯定会出现错误。您应该至少发布传递bundle的两个活动中的完整代码。我认为您不清楚传递bundle。这是我不久前发布的一个答案。你应该阅读它来明确你的意图
    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();
            }