Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 我的活动启动了两次_Android_Android Studio_Android Activity_Firebase_Firebase Realtime Database - Fatal编程技术网

Android 我的活动启动了两次

Android 我的活动启动了两次,android,android-studio,android-activity,firebase,firebase-realtime-database,Android,Android Studio,Android Activity,Firebase,Firebase Realtime Database,我有一个listview和setOnItemClickListener()方法,当我单击它时,我希望它打开新的活动,并给它2个附加值,项目编号和登录的用户(返回主屏幕),问题是活动启动两次,一个附加值良好,另一个附加值位置为“0” 此代码用于检查Firebase服务器中是否有位置(不超过5名玩家),如果有,则将用户添加到服务器并加入会议室(启动ServerActivity) listView.setOnItemClickListener(新的AdapterView.OnItemClickList

我有一个listview和
setOnItemClickListener()
方法,当我单击它时,我希望它打开新的活动,并给它2个附加值,项目编号和登录的用户(返回主屏幕),问题是活动启动两次,一个附加值良好,另一个附加值位置为“0”

此代码用于检查Firebase服务器中是否有位置(不超过5名玩家),如果有,则将用户添加到服务器并加入会议室(启动
ServerActivity

listView.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、最终整型位置、长id){
myRef=database.getReference(“服务器”+位置);
myRef.addListenerForSingleValueEvent(新的ValueEventListener()){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
int i=0;
while(dataSnapshot.child(“player”+i).child(“username”).getValue()!=null)
i++;
如果(i<5){
Log.d(“实现子对象”、“玩家”+i);
CustomUser CustomUser=new CustomUser(false,currentUser.getUsername(),“”,0,currentUser.getWins());
myRef.child(“播放器”+i).setValue(自定义用户);
意向意向=新意向(GameActivity.this、ServerActivity.class);
intent.putExtra(“serverNum”,位置);
intent.putExtra(“当前用户”,当前用户);
Log.d(“位置”,位置+”);
星触觉(意向);
完成();
}
否则{
Toast.makeText(getApplicationContext(),“服务器已满”,Toast.LENGTH\u SHORT.show();
myRef.child(“isJoinable”).setValue(false);
}
adapter.notifyDataSetChanged();
}
@凌驾
已取消的公共无效(DatabaseError错误){
//无法读取值
Toast.makeText(getApplicationContext(),“”+
“Internet错误”,Toast.LENGTH_SHORT.show();
}
});
意向意向=新意向(GameActivity.this、ServerActivity.class);
intent.putExtra(“当前用户”,当前用户);
星触觉(意向);
完成();
//TODO FIX:活动可能会启动两次
}
});

我尝试在清单中修改
启动模式
,但结果失败,导致“serverNum”额外值为0而不是位置。

为什么添加此代码:

        Intent intent = new Intent(GameActivity.this,ServerActivity.class);
        intent.putExtra("currentUser",currentUser);
        startActivity(intent);
        finish();

这将导致您的
ServerActivity
在添加侦听器后立即启动。您是否尝试过对此代码进行注释,并仅使用
onDataChange
中有效的代码?

可能复制了此代码,但忘记将其从中删除,已查找此代码数小时,我现在感觉有点愚蠢,但谢谢@NetanelMalichi这正是Android Studio调试器非常有用的情况。我强烈鼓励你学习如何使用它。
        Intent intent = new Intent(GameActivity.this,ServerActivity.class);
        intent.putExtra("currentUser",currentUser);
        startActivity(intent);
        finish();