Как передать строку между двумя действиями - PullRequest
2 голосов
/ 18 июня 2011

У меня есть два действия A и B, и из упражнения A я нажимаю кнопку, которая открывает диалоговое окно, которое содержит форму, состоящую из двух полей редактирования текста и кнопки (кнопка в диалоговом окне используется для запуска деятельность Б). Итак, мой вопрос: как передать строку из действия B в действие A, но не закрывая диалоговое окно (строка будет использоваться для заполнения одного из двух полей редактирования текста).

Ответы [ 5 ]

4 голосов
/ 18 июня 2011

Вам нужно создать класс для хранения переменной. При использовании ActivityB установите значение переменной, созданный класс сохранит его, а в ActivityA получите значение переменной.

  1. Создать класс: GlobalVars.java. В этом классе положить это:

    открытый класс GlobalVars расширяет приложение {

    private static String var2;
    
    public static String getVar() {
        return var2;
    }
    
    public static void setVar(String var) {
    var2 = var;
    }
    

    }

В ActivityB поместите эту строку в соответствующее место:

String something;
GlobalVars.setVar(something);

В ActivityA поместите эту строку в соответствующее место:

String getsomething = GlobalVars.getVar();

И это все!

1 голос
/ 18 июня 2011

Если я правильно понимаю вашу проблему, вы хотите сохранить диалоговое окно, когда действие B возвращает результат.В таком случае вы можете открыть диалоговое окно onActivityResult

  1. Активность A
  2. Нажмите кнопку, чтобы открыть диалоговое окно
  3. Запустите Активность B
  4. Верните результат вОперация A
  5. onActivityResult снова вызовет
  6. открытое диалоговое окно

Примечание: действие A не должно быть SingleTask, SingleInstance, SingleTop.

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

KPBird

0 голосов
/ 18 июня 2011

Я думаю, вам нужно использовать Bundle и статическую глобальную переменную и onActivityResult (). Если вы хотите изменить клиента с предыдущим клиентом на новый клиент. Предположим, у вас есть активность "ClientList" и активность "EditClient"

Запись в "EditClient" Деятельность

Bundle extras = getIntent().getExtras();
  if (extras != null) 
  {
      String name = extras.getString(ClientList.KEY_Client);//ClientList.KEY_Client is global static variable of "ClientList" Activity.

      if (name != null) 
      {
          nameText.setText(name);//"nameText" is a EditText object represent EditText view
      }

  }
0 голосов
/ 18 июня 2011

Вы можете использовать систему вещания для отправки Намерения, содержащего данные, другому занятию.

Поиск в Google или stackoverflow Есть много учебных пособий и примеров того, как этого добиться. насколько я понимаю, вы хотите, чтобы действие a получало уведомления и заполняло поле на основании какого-либо действия в диалоговом окне.

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

0 голосов
/ 18 июня 2011

Возможно, попробуйте использовать sharedpreferences!?

...