BlackBerry добавление полей на главный экран через другой класс - PullRequest
0 голосов
/ 09 января 2012

Я хочу создать панель вкладок, которая будет отображаться в нижней части нескольких главных экранов, и я подумал, что создание одного класса будет правильным решением.

Проблема, что неудивительно, так как яя новичок в том, что когда я пытаюсь добавить поле в своем классе, как оно помещается в главный экран?Нужно ли отправлять какую-то ссылку на экран, с которым я хочу работать?

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 голосов
/ 09 января 2012

Вам нужен объект MainScreen, и вы хотите использовать setStatus (this), чтобы поместить панель вкладок внизу экрана.Раздел состояния главного экрана остается видимым и всегда находится внизу экрана.Баннер всегда вверху, а заголовок чуть ниже баннера.Все остальное находится в прокручиваемой области между заголовком / баннером и разделами состояния экрана.

0 голосов
/ 09 января 2012

Если вы хотите добавить дочерние объекты непосредственно к 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);
        ...
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...