Можно ли получить значение объекта без вызова новой деятельности? - PullRequest
0 голосов
/ 01 сентября 2011

Я знаю, что нужно вызывать новое действие и передавать значение объекта из одного действия в другое, используя функции putExtra и getExtra. но я хочу передать значение без вызова и начать новую деятельность. Является ли это возможным ? Если да, то дайте мне знать, как я могу это сделать?

Ответы [ 5 ]

2 голосов
/ 01 сентября 2011

Вы также можете использовать класс Application для объявления глобальных переменных

class Globalclass extends Application {

  private String myState;

  public String getState(){
    return myState;
  }
  public void setState(String s){
    myState = s;
  }
}

class TempActivity extends Activity {

  @Override
  public void onCreate(Bundle b){
    ...
    MyApp appState = ((MyApp)getApplicationContext());
    String state = appState.getState();
    ...
  }
}

ОБНОВЛЕНО:

Закажите этот хороший урок о том, как это сделать.

Класс приложения, используемый в качестве глобального

1 голос
/ 01 сентября 2011

Существует множество способов передать значение в действие:

  • Вы можете использовать Intent с FLAG_ACTIVITY_REORDER_TO_FRONT. В этом случае будет вызываться метод onNewIntent() для уже запущенного действия.
  • Вы можете использовать статические поля или статические методы для передачи новых данных в вашу деятельность. Но на самом деле это не очень хороший метод, потому что иногда приложение закрывается, даже если оно на переднем плане и все статические данные теряются.
  • Вы можете отправлять новые данные в мероприятие, используя широковещательные сообщения. В этом случае активность должна регистрироваться BroadcastReceiver.

Я думаю, что не очень сложно придумать еще несколько способов передачи аргументов.

1 голос
/ 01 сентября 2011

Вы можете воспользоваться помощью базы данных, такой как SQLite, или использовать концепцию класса Constant, в которой вы можете создать общедоступную статическую переменную и сохранить ваши данные в одном действии и получить доступ к другому. Надеюсь, это поможет вам.

1 голос
/ 01 сентября 2011

Возможно, вы захотите использовать handleMessage () обработчика и передать объект в сообщении.

            Handler handler =  new Handler(){
    @Override
    public void handleMessage(Message msg) {
            }
            };

Затем вы можете вызвать handler.handleMessage (msg), вы можете назначить любой объект msg.onj

1 голос
/ 01 сентября 2011

для этого вы можете использовать static variable или SharedPreferences или, если у вас большие данные, вы можете использовать SQlite.

...