2014-02-24 25 views
0

所以我熟悉OOP和java基础知识。一些Android的细微差别仍然逃脱我。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中?

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

那么有什么解决方案?

预先感谢您的帮助,

JRad

回答

0

我已经想通了。

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

[ClassNameTheHoldsTheArray] .ArrayName

所以在这种情况下,我不得不使用参考GameBoardActivity。AVAILABLE_TILES

感谢大家的帮助。

JRad

+0

堆栈溢出说我必须等待2天后才能接受。 –

0

AVAILABLE_TILES的知名度在活动可能是您的问题

+0

护理阐述? AVAILABLE_TILES设置为** public static ** –

0

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

编辑 以上假设AVAILABLE_TILES不是静态的。如果是,只需简单地对其进行限定即可,例如MyClass.AVAILABLE_TILES