Изменить ориентацию экрана в Blackberry? - PullRequest
1 голос
/ 15 декабря 2011

В моем приложении я хочу показать экраны в соответствии с ориентацией.Я знал, что всякий раз, когда устройство ориентировано, вызывается метод sublayout () текущего экрана.В соответствии с этой точкой зрения я пишу так:

Здесь StartUp - другое имя класса;

Это мой LoadingScreen.java Class;

public class LoadingScreen extends MainScreen
{
public LoadingScreen()
{       
    createGUI();
}

protected void sublayout(int width, int height) 
{
    StartUp.screenOrientation();        
    if(StartUp.isLandscape)
    {
        deleteAll();
        createGUI();            
        invalidate();           
    }
    else
    {   
        deleteAll();
        orientGUI();            
        invalidate();
    }
    super.sublayout(width,height);  
}

public void createGUI()
{
    //For LANDSCAPE Display;
}

public void orientGUI()
{
    //For PORTRAIT Display;
}   
}

Метод screenOrientation () таков:

public static void screenOrientation()
{
    if(Display.getOrientation()==Display.ORIENTATION_LANDSCAPE)     
    {
        isLandscape=true;
        width=480;
        height=360;
    }
    else
    {
        isLandscape=false;
        width=360;
        height=480;
    }
}

Я получаю экран в обоих режимах ориентации.Моя проблема в том, что если я возьму одно поле textboxField и введу что-либо в режиме LANDSCAPE и в ориентацию в режим PORTRAIT, данные исчезнут.Потому что я звоню createGUI ();или orientGUI ();методы в sublayout () .

Еще одна проблема, с которой я сталкиваюсь на сенсорном экране:

Если я хочу ввести текст в любом текстовом поле, поле открывает «клавиатуру».Это не проблема.Главное, чтобы клавиатура открывалась / скрывалась снова и снова, вызывая sublayout () этого класса.Итак, я получаю обновленный экран.

Итак, есть ли другой способ получить ориентацию?Если это так, помогите мне.

1 Ответ

2 голосов
/ 15 декабря 2011

Чтобы решить первую проблему, у вас есть два варианта.

  • Не удаляйте поля, просто перерисуйте экран для другой ориентации.
    • Сохраните значение textboxfield перед удалением поля и после изменения ориентации установите значение textboxfield с сохраненным значением.Вам нужно будет даже определить положение курсора и установить его.

    Для решения второй проблемы

    После изменения ориентации установите новую переменную "currentWidth" как Display.getWidth().Затем, когда вам позвонят на sublayout(), проверьте Display.getWidth() и посмотрите, равно ли оно currentWidth.Если оно равно, это означает, что ориентация не изменилась.Если нет, то ориентация изменилась.

    надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...