2012-01-08 47 views
0

我想製作一個標籤欄,它將顯示在幾個MainScreens的底部,我認爲創建一個班級是正確的選擇。黑莓通過另一個班級向MainScreen添加字段

由於我是新手,這個問題並不出乎意料,因爲當我嘗試在我的課程中添加一個字段時,它如何將它放置在MainScreen中?我是否必須向我想要使用的屏幕發送某種參考?

package mypackage; 

import net.rim.device.api.system.Bitmap; 
import net.rim.device.api.ui.container.HorizontalFieldManager; 

public class CustomTabBar { 
    private HorizontalFieldManager bar; 

    public CustomTabBar(){ 
    } 

    public void buildBar(){ 
     bar = new HorizontalFieldManager(); 

     add(bar); //Where am I adding this?! 

     Bitmap eventIcon = Bitmap.getBitmapResource("eventsicon.png"); 
     Bitmap eventIcon_hover = Bitmap.getBitmapResource("eventsicon-hover.png"); 
     CustomMenuField eventIconField = new CustomMenuField(eventIcon_hover,eventIcon, "TheatreScreen"); 
    } 
} 

回答

0

如果你想添加子對象直接到MainScreen,那麼,你需要傳遞到MainScreen參考各地,如:

public class CustomTabBar { 
    private HorizontalFieldManager bar; 

    public void buildBar(MainScreen main) { 
     bar = new HorizontalFieldManager(); 

     Bitmap eventIcon = Bitmap.getBitmapResource("eventsicon.png"); 
     Bitmap eventIcon_hover = Bitmap.getBitmapResource("eventsicon-hover.png"); 
     CustomMenuField eventIconField = new CustomMenuField(eventIcon_hover,eventIcon, "TheatreScreen"); 

     bar.add(eventIconField); 
     main.add(bar); 
    } 
} 

public class MyMainScreen extends MainScreen { 
    private CustomTabBar tab; 

    public MyMainScreen() { 
     ... 
     tab = new CustomTabBar(); 
     tab.buildBar(this); 
     ... 
    } 
} 

我想一個更好的解決辦法是改變你的類來代替HorizontalFieldManager延長它封裝,例如:

public class CustomTabBar extends HorizontalFieldManager { 

    public CustomTabBar(long style) { 
     super(style); 

     Bitmap eventIcon = Bitmap.getBitmapResource("eventsicon.png"); 
     Bitmap eventIcon_hover = Bitmap.getBitmapResource("eventsicon-hover.png"); 
     CustomMenuField eventIconField = new CustomMenuField(eventIcon_hover,eventIcon, "TheatreScreen"); 
     add(eventIconField); 
    } 
} 

public class MyMainScreen extends MainScreen { 
    private CustomTabBar tab; 

    public MyMainScreen() { 
     ... 
     tab = new CustomTabBar(...); 
     add(tab); 
     ... 
    } 
} 
0

您需要MainScreen對象,並且想要使用setStatus(this)將標籤欄放在屏幕的底部。 MainScreen的狀態部分保持可見狀態,並始終位於屏幕的底部。橫幅總是在頂部,標題正好在橫幅下面。其他所有內容都位於標題/橫幅和屏幕狀態部分之間的可滾動區域。

相關問題