Java 在活动之间传输int无法正常工作

Java 在活动之间传输int无法正常工作,java,android,android-studio,android-intent,extras,Java,Android,Android Studio,Android Intent,Extras,我需要在两个活动之间传输User和int,这发生在单击listview中的项时, 活动1: Intent intent = new Intent(GameActivity.this,ServerActivity.class); intent.putExtra("serverNum",position); intent.putExtra("currentUser",currentUser); Log.d("position", position + ""); startActivity(inten

我需要在两个活动之间传输User和int,这发生在单击listview中的项时, 活动1:

Intent intent = new Intent(GameActivity.this,ServerActivity.class);
intent.putExtra("serverNum",position);
intent.putExtra("currentUser",currentUser);
Log.d("position", position + "");
startActivity(intent);
finish();
位置是由用户单击的项目的编号决定的,log.d确实显示了当前位置,但是当我尝试在活动2中获取该Int时,它总是0

在活动2中:

Log.d("Server Number",getIntent().getExtras().getInt("serverNum")+"");
此log.d始终显示0。 不过,用户传输效果很好

编辑


我发现它与android有关:清单中的launchMode=singleTask,出于某种原因,活动会打开两次,一个打开得很好,另一个打开时额外的serverNum等于0,有什么建议吗?

在活动2中试试这个

int id=getIntent().getIntExtra("serverNum", 0);

Log.d("ServerNumber",id+"");

尝试重写方法,并检查其中的值

@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
int id=intent.getIntExtra("serverNum", 0);
Log.d("ServerNumber",id+"");
setIntent(intent);

}

你应该摆脱android:launchMode=singleTask。原因是这只创建了活动的一个实例。一旦返回到它,它会将额外值重置为0。在这里,您可以阅读有关启动类型的信息:

确定名称中没有输入错误吗?最好使用一个常量来避免这种可能性。有两个原因可以肯定,1我没有得到null,日志上写着D/Server Number:0,我检查了10次,这不是一个打字错误,是的,通过复制和粘贴,日志上写着D/Server Number:0位置的数据类型是int?是的,我发现它与清单中的android有关:launchMode=singleTask,出于某种原因,活动打开两次,一个打开得很好,另一个打开时额外的serverNum等于0,有什么建议吗?我不明白你的问题。也许你可以编辑你的帖子。