Как получить доступ к файлу на экране, используя экранный объект (UiApplication.getUiApplication (). GetActiveScreen ()) - PullRequest
0 голосов
/ 26 апреля 2011

Мой запрос - Как получить доступ к полям на сложенном экране, используя экранный объект?

Точная проблема заключается в следующем:

У меня есть один экран, в котором есть одно текстовое поле (ClientName), когда пользователь нажимает на это поле, затем приложение открывает новый экран и позволяет пользователю выполнять поиск в удаленной базе данных, используя MyWebSerivces. и когда пользователь выбирает одного клиента из результатов поиска, я хочу установить текстовое поле на предыдущем экране с текстом, выбранным пользователем на текущем экране.

Я пробовал pushScreen (новый экран ("текст)), и это может быть результатом, если я хочу выполнить эту операцию только один раз, но это не вариант для меня, так как есть еще два таких поля, которые перейдут к другой экран для извлечения данных из веб-сервисов, и если я каждый раз нажимаю на новый экран, то после каждой операции на экране я получу только одно поле с нужным текстом

Ответы [ 3 ]

1 голос
/ 26 апреля 2011

Это не вопрос, связанный с ежевикой (или каким-либо конкретным языком программирования).Это вопрос архитектуры приложения и здравого смысла.Если один экран должен изменить Field другого экрана, просто передайте ссылку Field на экран, который изменит его.

0 голосов
/ 28 апреля 2011

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

UiApplication.getUiApplication().getActiveScreen() 

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

UiApplication.getUiApplication().posScreen(this)
(MyScreen1) UiApplication.getUiApplication().getActiveScreen() 

теперь я могу получить доступ ко всем полям на восстановленном экране (MyScreen1)

что нужно иметь в виду

  1. убедитесь, что вы приводите экран только к его типу, иначе bb выдаст ошибку "ресурс не найден"

Преимущества использования экрана в стеке

  1. вы можете использовать уже созданный экран из стека, нет необходимости создавать новый
  2. если вы создадите новый экран, он будет размещен в памяти и будет занимать все больше и больше памяти, даже если он бесполезен (используйте привычку выскочить на экран, если он бесполезен, вместо того, чтобы оставлять его в стеке))
  3. нет необходимости создавать какую-либо статическую переменную, так как вы сможете установить все поля прямо с другого экрана
0 голосов
/ 27 апреля 2011

привет, у меня когда-то была такая же проблема, и я сделал так:

Screen1

                  ------------------
  Client Name     |  text field     |
                  ------------------

Когда пользователь нажимает на это текстовое поле или любую кнопку, вы нажимаете Screen2 На экране 2, когда пользователь выбирает конкретное значение, тогда вы делаете это.

1) возьмите статическую переменную в главном классе, скажем, clientName. 2) установить значение этой переменной. 3) всплывающее активное окно

UiApplication.getUiApplication().getActiveScreen();

когда этот код вызывается, вы возвращаетесь к Screen1 Теперь в screen1 метод называется

    public void  onExposed()
    {
      //here u can set the text in textfield using the static variable 
      invalidate(); // for repainting
    }
...