BlackBerry通过另一个类向MainScreen添加字段

时间:2012-01-08 22:02:38

标签: blackberry

我想制作一个显示在几个MainScreens底部的标签栏,我认为创建一个类是正确的方法。

问题,因为我是新手,这并不奇怪,当我尝试在我的课程中添加一个字段时,它是如何将它放在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");
    }
}

2 个答案:

答案 0 :(得分: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);
        ...
    }
}

答案 1 :(得分:0)

您需要MainScreen对象,并且您想使用setStatus(this)将标签栏放在屏幕底部。 MainScreen的状态部分保持可见,并始终位于屏幕的底部。横幅始终位于顶部,标题位于横幅下方。其他所有内容都位于标题/横幅和屏幕状态部分之间的可滚动区域。