2013-06-10 2 views
-2

Я хочу передать значение от активности A к активности B без фактического начала активности B (поэтому это исключает использование намерений и putExtra). Активность B может быть запущена или не запущена, но когда ей нужно отобразить значение, переданное ей по активности A.Как передать значение активности другому без его запуска?

Я искал высоко и низко, но не смог найти подходящего решения для этого, казалось бы, простого вопроса. Любая помощь будет оценена!

+1

Если B не начинается, то что нужно дополнительно? –

+5

Я думаю, вы должны использовать класс Application для глобальных переменных –

+0

Как я уже упоминал в вопросе, активность B ** может быть запущена или не запущена ** –

ответ

0

Используйте глобальный класс как:

public class AppConfig { 

    Context context; 
    public AppConfig(Context mxt) { 

     context = mxt; 
    } 

    public static String filepath = null; 

Затем в деятельности до того onCreate():

AppConfig config; 
Context context; 

и в onCreate() методе поставить это:

context = getApplicationContext(); 
config = new AppConfig(context); 

И, во второй активность B перед тем onCreate():

AppConfig config; 
Context context; 

И в onCreate() методе поставить это:

context = getApplicationContext(); 
config = new AppConfig(context); 

И установите значение, где вы хотите. Надеюсь, что это поможет вам.

6

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

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

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

+0

@Garima: Это правильно, если только Activity A может запустить Activity B, я не понимаю, почему вы не хотите использовать Intents. – Carnal

+0

Позвольте мне сказать, что вы начинаете онлайн-транзакцию, и на первой странице запрашивается ваше имя, транзакция затем переходит с одной страницы на другую с запросом других деталей (транзакция может прекратиться на полпути по какой-либо причине) и то в конце транзакции последняя страница говорит ** BYE **. Теперь я хочу иметь возможность сохранить имя с первой страницы и передать его на последнюю страницу (в случае, если элемент управления там когда-либо достигнет). ** Получить изображение? ** –

+0

Определить страницу! Является ли каждая страница активным? – Carnal

0

Вы можете использовать shared Preferences. Используя это одно действие, можно установить в него значение, и из него можно прочитать другую активность.

+0

Общие предпочтения не подходят моему делу. Спасибо. –

0

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

использование Make классов

public class GetSet { 

    public GetSet() { 
     super(); 
    } 

    private static boolean passwordSet = false; 

    public static boolean isPasswordSet() { 
     return passwordSet; 
    } 

    public static void setPasswordSet(boolean passwordSet) { 
     GetSet.passwordSet = passwordSet; 
    } 
} 

Вы можете получить доступ тыс используя GetSet.setPasswordSet(false); и Boolean flag = GetSet.isPasswordSet();

0

Установите значение, как Global:

общественного класса Global {

public static int mValue; 


public static int getValue() { 
    return mValue; 
} 

public static void setValue(int mValue) { 
    Global.mValue = mValue; 
} 

}

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