2009-11-04 4 views
2

Мне нужно разработать приложение, в котором я могу менять экраны с помощью пунктов меню предыдущего и следующего. Можете ли вы дать мне приблизительное представление о том, как его реализовать?Как разработать многоэкранное приложение Blackberry?

Благодаря

ответ

5

Вы можете реализовать его как массив экранов и подтолкнуть их в круг. но не забудьте вытащить текущий экран перед нажатием нового.

Это приложение будет обрабатывать экранный переключатель, а также будет обрабатывать экранный массив. Но меню помещается на экран, поэтому мы должны сделать некоторую связь между экраном и классом приложения.

Давайте есть слушателю для переключения экранов:

interface IBarrelListener { 
    public void goPreviouse(); 

    public void goNext(); 
} 

Теперь мы можем реализовать экран с этим слушателем и соответствующее меню:

class ABarrelScreen extends MainScreen { 
    IBarrelListener mBarrelListener; 

    public ABarrelScreen(IBarrelListener barrelListener) { 
     super(); 
     mBarrelListener = barrelListener; 
    } 

    protected void makeMenu(Menu menu, int instance) { 
     super.makeMenu(menu, instance); 
     menu.add(goPreviouseMenuItem); 
     menu.add(goNextMenuItem); 
    } 

    MenuItem goPreviouseMenuItem = new MenuItem("go previouse", 0, 0) { 
     public void run() { 
      mBarrelListener.goPreviouse(); 
     }; 
    }; 

    MenuItem goNextMenuItem = new MenuItem("go next", 0, 0) { 
     public void run() { 
      mBarrelListener.goNext(); 
     }; 
    }; 
} 

И само приложение класса:

public class ScrCircleApp extends UiApplication implements IBarrelListener { 

    ABarrelScreen[] mScreens = generateScreens(); 
    int mCurrentScreen = 0; 

    public ScrCircleApp() { 
     pushScreen(mScreens[mCurrentScreen]); 
    } 

    public static void main(String[] args) { 
     ScrCircleApp app = new ScrCircleApp(); 
     app.enterEventDispatcher(); 
    } 

    private ABarrelScreen[] generateScreens() { 
     ABarrelScreen[] screens = new ABarrelScreen[6]; 
     for (int i = 0; i < screens.length; i++) { 
      screens[i] = new ABarrelScreen(this); 
      screens[i].add(new LabelField("This is screen # " 
        + String.valueOf(i))); 
     } 
     return screens; 
    } 

    public void goNext() { 
     popScreen(mScreens[mCurrentScreen]); 
     mCurrentScreen++; 
     if (mCurrentScreen >= mScreens.length) 
      mCurrentScreen = 0; 
     pushScreen(mScreens[mCurrentScreen]); 
    } 

    public void goPreviouse() { 
     popScreen(mScreens[mCurrentScreen]); 
     mCurrentScreen--; 
     if (mCurrentScreen < 0) 
      mCurrentScreen = mScreens.length - 1; 
     pushScreen(mScreens[mCurrentScreen]); 
    } 
} 

alt text http://img526.imageshack.us/img526/2372/screenbarrel.jpg

+1

Вот что мне нужно, и все это есть. U bang @ spot каждый раз. Благодарю. – Bohemian

+0

Добро пожаловать! –

0
getUiEngine().pushScreen(new MyNextScreen()); 

использовать эту функцию, чтобы показать другой экран

Смежные вопросы