Как транслировать значение переменной и получать его? - PullRequest
1 голос
/ 27 февраля 2012

Я подаю заявку, в которой хочу транслировать значение переменной по нажатию кнопки.В то же время я хочу получить это значение в другой активности и отобразить его.Как мне сделать то же самое?

Ответы [ 4 ]

1 голос
/ 27 февраля 2012

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

Для этого же можно расширить android.app.Application class,

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


Пример из Другой вопрос ,

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();

Как показано в примере, устанавливает вашу переменную из одного действия (или щелчка кнопки в любом случае) и получает это значение в другом действии.

1 голос
/ 27 февраля 2012

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

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

1 голос
/ 27 февраля 2012

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

1 голос
/ 27 февраля 2012

Опция 1: Создание настраиваемого намерения в действии отправки (например, CurrentActivity):

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

Трансляция:

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

Регистрация широковещательного приемникав активности, которую вы хотите получить (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");
        }
...