Java android开发中的范围问题

Java android开发中的范围问题,java,android,class,scope,Java,Android,Class,Scope,所以我熟悉OOP和java的基础知识 尽管如此,Android的一些细微差别仍然让我难以理解 我现在对我的一些课程的范围有一个真正的问题。下面是一个例子: 在我的活动中,我引用了一个名为Player的自定义类。Player可以做很多事情,包括绘制瓷砖和放置瓷砖 我在我的活动中保留了一个所有未绘制的可用瓷砖的列表,这些瓷砖位于可用瓷砖的数组中。这一点很重要,因为我在许多不同的情况下都会引用该列表 这是我的问题 以下是我活动中的代码: public void setUpPlayers(){

所以我熟悉OOP和java的基础知识

尽管如此,Android的一些细微差别仍然让我难以理解

我现在对我的一些课程的范围有一个真正的问题。下面是一个例子:

在我的活动中,我引用了一个名为Player的自定义类。Player可以做很多事情,包括绘制瓷砖和放置瓷砖

我在我的活动中保留了一个所有未绘制的可用瓷砖的列表,这些瓷砖位于可用瓷砖的数组中。这一点很重要,因为我在许多不同的情况下都会引用该列表

这是我的问题

以下是我活动中的代码:

    public void setUpPlayers(){
    for (int i = 0; i < players.length; i++) {
        players[i] = new Player(playerNames[i], 6000);
        players[i].drawTile(1); //draw one tile

        //find the ID for the tile just placed
        String tileID = players[i].findTileIdByIndex(0); //first tile in thier tile pool

        players.[i].placeTile(tileID);          

        Log.d(players[i].getName(), tileID);
    }
}
下面是Player类的代码:

    public void drawTile(int quantity){

    //repeat for the total number of tiles being drawn
    for (int i = 0; i < quantity; i++) {

        //get a random tile ID from the list of available tiles
        int randomTileIndex = RNG.nextInt(AVAILABLE_TILES.size());
        String randomTileName = AVAILABLE_TILES.get(randomTileIndex);

        //add this tile to the player's pool of tiles
        addPlayerTile(randomTileName);

        Log.d("AVAILABLE_TILE_REMOVED", String.valueOf(randomTileIndex));

        //and remove that tile now from the available tiles list
        AVAILABLE_TILES.remove(randomTileIndex);            
    }
}
如您所见,我有一个ArrayList,它保存每个可用磁贴的ID。不在任何玩家池中,也不在棋盘上

问题是,因为ArrayList在活动中,所以我似乎无法在Player.java中引用它

我是否需要将一些与android相关的库导入Player.java

在另一种情况下,我创建了一个自定义类平铺数组,它扩展了Button,并且在活动中引用全局静态变量时没有问题

那么解决办法是什么呢

提前感谢您的帮助


JRad

活动中可用瓷砖的可见性可能是您的问题

修改您的播放器构造函数,将其作为活动的参数引用。在构造函数中,将活动类类型的变量(例如,在玩家类中定义的MyActivity MacActivity)设置为等于此参数。现在,无论何时需要访问可用的\u TILES,都可以通过mActivity.AVAILABLE\u TILES访问它

编辑
上述假定的可用_瓦片不是静态的。如果是,只需对其进行适当的限定,例如MyClass.AVAILABLE\u TILES。

我现在已经弄明白了

我需要以静态方式引用数组。表示以下格式:

[ClassName theHoldsTheArray].ArrayName

所以在这个例子中,我必须使用参考GameBoardActivity.AVAILABLE\u TILES

谢谢大家的帮助


JRad

需要详细说明吗?AVAILABLE_TILES设置为public staticStack Overflow表示我必须等待2天才能接受。