android开发中的范围问题

时间:2014-02-24 18:38:28

标签: java android class scope

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

Android的一些细微差别仍然让我感到沮丧。

我现在对某些课程的范围存在实际问题。这是一个例子:

在我的活动中,我引用了一个名为“玩家”的自定义类,玩家可以做很多事情,包括绘制图块和放置图块。

我在我的活动中保留了AVAILABLE_TILES数组中所有未绘制的可用切片的列表。这很重要,因为我在许多不同情况下一直引用该列表。

这是我的问题。

以下是我活动中的代码:

    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);
    }
}

这是“玩家”类的代码:

    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?

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

那么解决方案是什么?

提前感谢您的帮助,

JRad

3 个答案:

答案 0 :(得分:0)

活动中AVAILABLE_TILES的可见性可能是您的问题

答案 1 :(得分:0)

修改您的Player构造函数,将参数作为您活动的参考。在构造函数中,设置活动类'type(例如MyActivity mActivity)的变量,该变量在Player类中定义,等于此参数。现在,只要您需要访问AVAILABLE_TILES,就可以通过mActivity.AVAILABLE_TILES访问它。

修改 上面假设的AVAILABLE_TILES不是静态的。如果是,只需正确地对其进行限定,例如: MyClass.AVAILABLE_TILES

答案 2 :(得分:0)

我现在已经知道了。

我需要以“静态方式”引用数组。含义如下:

[ClassNameTheHoldsTheArray] .ArrayName

所以在这个例子中,我不得不使用引用GameBoardActivity.AVAILABLE_TILES

感谢大家的帮助。

JRad