2012-02-27 5 views

ответ

1

Кажется мне, как вы можете использовать глобальную переменную, которая может использоваться во всех мероприятиях (Кроме того, ответив на некоторые непрошеные вопросы;).)

Для того же, вы можете расширить android.app.Application класс,

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


Пример из Another question,

public class MyApplication extends Application { 

    private String someVariable; 

    public String getSomeVariable() { 
     return someVariable; 
    } 

    public void setSomeVariable(String someVariable) { 
     this.someVariable = someVariable; 
    } 
} 

Тогда в вашей деятельности вы можете получить и установить переменную как так:

// set 
((MyApplication) this.getApplication()).setSomeVariable("foo"); 

// get 
String s = ((MyApplication) this.getApplication()).getSomeVariable(); 

Как показано в примере, комплект ваш va из одного действия (или нажмите кнопку мыши) и получите, что значение в другой деятельности.

+0

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

1

Вариант 1: Создание пользовательского намерения в передающем деятельности (пример: CurrentActivity):

public static final String RESTART_CHAT_POLLING_INTENT = "com.cleeqa.android.chat.restart.intent"; 

Broadcast это:

Intent i = new Intent(); 
i.setAction(RESTART_CHAT_POLLING_INTENT); 
mContext.sendBroadcast(i); 

Зарегистрируйте BroadcastReceiver в деятельности, который вы хотите получать (NewActivity):

BroadcastReceiver myReceiver = new MyBroadcastReceiver(); 
IntentFilter filter = new IntentFilter(); 
filter.addAction(CurrentActivity.RESTART_CHAT_POLLING_INTENT); 
registerReceiver(myReceiver, filter); 

Прием вещания (также в NewActivity):

private class MyBroadcastReceiver extends BroadcastReceiver { 

     @Override 
     public void onReceive(Context context, Intent intent) { 
      if (intent.getAction().equals(CurrentActivity.RESTART_CHAT_POLLING_INTENT)) { 

       //DO WHAT YOU WANT 

      } 
    } 

Вариант 2 (нет необходимости радиовещательного приемника): OnClick:

Intent intent = new Intent(CurrentActivity.this, NewActivity.class); 
intent.putExtra("PARAM", parameter); 
startActivity(intent); 

OnCreate/OnStart активности, который вы хотите (NewActivity):

Bundle extras = getIntent().getExtras(); 
     if (extras != null) { 
      parameter = extras.getString("PARAM"); 
     } 
1

Нужно ли для вашего заявления обращаться к dcast переменная? если вы просто хотите передать переменную из текущей активности в новую активность, запустите новое действие из текущего путем вызова startActivityForResult и передайте переменную в качестве параметра.

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

1

Я думаю, передавая его с помощью intent.putExtra("PARAM", parameter); и читать его с getExtras() гораздо проще и подходит для того, что ему нужно сделать!

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