Как принести действие к переднему плану (вершина стека)?

В Android я определил действие ExampleActivity.

Когда мое приложение было запущено, экземпляр этого A-действия был создан, скажите, что это A. Когда пользователь нажал кнопку в A, другой экземпляр B-действия, B был создан. Теперь стопка задачи является B-A с B наверху. Затем пользователь нажал кнопку на B, другом экземпляре C-действия, и C был создан. Теперь стопка задачи является C-B-A с C наверху.

Теперь, когда пользователь нажимает кнопку на C, я хочу, чтобы приложение принесло к переднему плану, т.е. сделало, чтобы быть наверху стопки задачи, ACB.

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

81
задан Eric Leschinski 22 September 2013 в 03:20
поделиться

4 ответа

Вы можете попробовать это FLAG_ACTIVITY_REORDER_TO_FRONT (документ точно описывает то, что вы хотите)

99
ответ дан 24 November 2019 в 09:31
поделиться

Короткий ответ: нет. Вы не можете передавать аргументы after_create.

Однако то, что вы пытаетесь сделать, является довольно распространенным явлением, и вокруг него есть другие пути.

Большинство из них включает в себя назначение связи до создания объекта, о котором идет речь, и позволяет ActiveRecord заботиться обо всем.

Самый простой способ достижения этого зависит от отношений между Ролями и Пользователями. Если значение равно 1 ко многим (у каждого пользователя есть одна роль), пользователи принадлежат к роли и отправляются role_id через форму.

 <%= f.collection_select :role_id, Role.all, :id, :name %>

Если между пользователями и ролями существует много или много отношений, вы достигаете того же, присваивая @ user.role _ ids

<%= f.collection_select :role_ids, Role,all, :id, :name, {},  :multiple => :true %>

Контроллер в любом случае выглядит как

def create   
  @user = User.new(params[:user])

  respond_to do |format|
    if @user.save
      flash[:notice] = 'User creation successful.'
      format.html { redirect_to @user }
    else
      format.html { render :action => 'new' }
    end
  end
end
-121--4144521-

Интересно, включена ли проверка соответствия FIPS на вашем компьютере. Вот пост, который я написал некоторое время назад, который говорит о выключении его и почему вы можете получить эти сообщения об ошибках. В основном FIPS - стандарт федерального правительства США по безопасности и шифрованию. На его основе некоторые алгоритмы шифрования не будут выполняться на компьютере, если компьютер работает в режиме соответствия FIPS. Простое исправление в этом случае - отключить проверку соответствия FIPS. Правильное исправление - выбрать правильный алгоритм шифрования.

Вот мой пост: http://blog.aggregatedintelligence.com/2007/10/fips-validated-cryptographic-algorithms.html и этот: http://blog.aggregatedintelligence.com/2009/08/cryptographic-algorithms-and-net.html

-121--3545693-

Я думаю, что комбинация флагов намерений должна сделать трюк. В частности, Intent.FLAG _ ACTIVITY _ CLEAR _ TOP и Intent.FLAG _ ACTIVITY _ NEW _ TASK .

Добавьте эти флаги к своему намерению перед вызовом startActivity .

4
ответ дан 24 November 2019 в 09:31
поделиться

В целом я считаю, что этот метод управления деятельностью не рекомендуется. Проблема с реактивацией действия на две ступени ниже в стеке заключается в том, что это действие, вероятно, было прекращено. Мой совет запомнить состояние ваших действий и запускать их с помощью startActivity ()

Я уверен, что вы видели эту страницу, но для вашего удобства эта ссылка

1
ответ дан 24 November 2019 в 09:31
поделиться

Лучший способ, который я нашел для этого, - использовать то же намерение, которое используется на домашнем экране Android - приложение Launcher.

Например:

Intent i = new Intent(this, MyMainActivity.class);
i.setAction(Intent.ACTION_MAIN);
i.addCategory(Intent.CATEGORY_LAUNCHER);
startActivity(i);

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

60
ответ дан 24 November 2019 в 09:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: