java - 从Java中的回调返回值
问题描述
所以在我的应用程序中,我有 2 个玩家在游戏中。玩家 1 被分配正面或反面,然后玩家 2 将被分配到玩家 1 没有的一侧。即如果玩家 1 是正面,那么玩家 2 是反面,反之亦然。
为了在将一方分配给玩家 2 之前检查哪一方玩家 1,我有一个回调设置来获取已分配哪一方玩家 1。回调看起来像这样。
public interface Player1SideCallback {
void onCallback(String side);
}
private void player1Side(final Player1SideCallback callback) {
FCGames.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull final DataSnapshot dataSnapshot) {
HomePage.getCurrentGameID(new HomePage.CallbackID() {
@Override
public void onSuccess(String currentGameID) {
String player1Side = dataSnapshot.child(currentGameID).child("HeadsOrTails").getValue().toString();
callback.onCallback(player1Side);
}
});
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
这是一个非常基本的回调。
join
现在,当玩家使用以下代码段单击他们作为玩家 2 分配给游戏的按钮时,我是这样的:
adapter = new MyRecyclerViewAdapter(this, openGames, new MyRecyclerViewAdapter.OnButtonClickListener() {
@Override public void onButtonClick(String id, final int position) {
String gameID = openGames.get(position);
second = new User(userName, 0, getSide2(), FirebaseAuth.getInstance().getUid(), gameID, false);
gm.setUser2(second);
FCGames.child(gameID).child("user2").setValue(second);
HomePage.setCurrentGame(gameID);
HomePage.setUserPosition(2);
}});
enter code here
如您所见,我在变量周围留了行空格,second
因为这是实际创建新播放器的地方。它说它getSide2()
正在为玩家 2 分配一方。
但是,我正在努力做到这一点。我在一个调用的方法中调用我的回调,getSide2()
以尝试将右侧正确分配给用户 2
private String getSide2() {
player1Side(new Player1SideCallback() {
@Override
public void onCallback(String side) {
if(side.equals("Heads")) {
String side2 = "Tails";
} else {
String side2 = "Heads";
}
}
});
}
因此,我想将 player2 分配给带有变量的一侧,side2
但我不确定如何使用回调从方法中返回此值。
如何使用这种类型的逻辑将正确的一侧正确分配给用户 2?
解决方案
推荐阅读
- javascript - 将 JavaScript XML DOM 对象转换为具有特定结构的对象
- r - 在列表中合并两个 df 一对多 - R
- sql - SQLite 触发器中的条件用于继承
- java - 如何从 Json 格式的 POST 请求中获取对象列表
- talend - Talend:如何更改所有作业的上下文变量?
- python - Python Flask 提交按钮问题
- kubernetes - 重启 master 和丢失节点上的 pod
- windows - fsutil - setCaseSensitiveInfo 后不支持请求
- android-espresso - Android.Espresso:如何在 SP 中检查 TextView 的文本大小?
- java - 理解通用客户端接口实现的问题