В Android я определил действие ExampleActivity.
Когда мое приложение было запущено, экземпляр этого A-действия был создан, скажите, что это A
. Когда пользователь нажал кнопку в A
, другой экземпляр B-действия, B был создан. Теперь стопка задачи является B-A с B наверху. Затем пользователь нажал кнопку на B, другом экземпляре C-действия, и C был создан. Теперь стопка задачи является C-B-A с C наверху.
Теперь, когда пользователь нажимает кнопку на C, я хочу, чтобы приложение принесло к переднему плану, т.е. сделало, чтобы быть наверху стопки задачи, ACB.
Как я могу написать код, чтобы заставить его произойти?
Вы можете попробовать это FLAG_ACTIVITY_REORDER_TO_FRONT
(документ точно описывает то, что вы хотите)
Короткий ответ: нет. Вы не можете передавать аргументы 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
.
В целом я считаю, что этот метод управления деятельностью не рекомендуется. Проблема с реактивацией действия на две ступени ниже в стеке заключается в том, что это действие, вероятно, было прекращено. Мой совет запомнить состояние ваших действий и запускать их с помощью startActivity ()
Я уверен, что вы видели эту страницу, но для вашего удобства эта ссылка
Лучший способ, который я нашел для этого, - использовать то же намерение, которое используется на домашнем экране Android - приложение Launcher.
Например:
Intent i = new Intent(this, MyMainActivity.class);
i.setAction(Intent.ACTION_MAIN);
i.addCategory(Intent.CATEGORY_LAUNCHER);
startActivity(i);
Таким образом, любое действие в моем пакете, которым пользователь пользовался в последнее время, снова выводится на передний план. Я нашел это полезным при использовании PendingIntent моего сервиса, чтобы вернуть пользователя к моему приложению.