Java 意图放额外总是空的
所以我有3个活动: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放在清单
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();
}