Подтвердить что ты не робот

Как мне перенаправить параметры Intent через цепочки действий?

У меня много операций, связанных вместе с Intents, а некоторые намерения требуют параметров, передаваемых в комплекте Bundle. Когда мне приходится пересылать параметры через несколько Деяний, следует ли я копировать каждый из них явно или есть лучший способ сделать это? Например, я мог бы клонировать копию текущего Intent в качестве отправной точки для вызова других подзадачных намерений, и это (предположительно) скопировало бы все предыдущие параметры Bundle.

В качестве иллюстрации скажем, что у вас есть проводник файлов. Активность, которая находится в одном из двух режимов: Expert и Novice. Вы хотите передать это состояние в какую-либо подзадачную активность, такую ​​как страница свойств файла, которую вы могли бы сделать, вызвав putExtra ( "skillLevel", "Expert" ) в Intent перед ее запуском. Теперь, если на странице свойств также есть подзадача Activity, например, параметры сжатия, как вы должны пересылать параметр "skillLevel"?

4b9b3361

Ответ 1

Я думаю, что лучший и более чистый способ сделать это - инициализировать следующий Intent с помощью полученного Intent через Intent(Intent) конструктор.

Intent newIntent = new Intent(receivedIntent);

Ответ 2

Я не знаю, почему вы хотите скопировать все остальные свойства с помощью конструктора.

intent.putExtras(oldIntent);

Должен сделать трюк. Обратите внимание, что intent - это вновь созданный экземпляр!

Ответ 3

Если параметр является системным, пока он не будет изменен (например, сложность игры), может быть проще описать его в общих предпочтениях. Это будет иметь побочный эффект запоминания сложности, установленной при выходе пользователя из приложения.

Ответ 4

Так как у нас нет глобальных переменных в Android, вы можете создать класс с обширной информацией о своем приложении и использовать шаблон Singleton. Поскольку он будет изменен для всей системы, таким образом, вы всегда можете получить один и тот же экземпляр этого объекта, следовательно, всегда такую ​​же информацию.

Пример:

public class Object {

private static Object instance;

private Object objectcall;  

private Object(){

}

public void setObject(Object newObject){
    this.objectcall = newObject;

} 


public  Object getObject(){
    return this.objectcall;
}


public static synchronized Object getInstance(){

         if(instance==null){    
           instance=new Object();
         }
         return instance;

}
}

когда вы хотите получить его в режиме "Только вызов"

Object objectSingleton = Object.getInstance();