Начать операцию с помощью параметра

Я очень новичок в разработке Android.

Я хочу создать и начать работу, чтобы показать информацию об игре. Я показываю эту информацию, мне нужна игра.

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

Это похоже на то, что у операции есть только один конструктор с одним параметром.

Как я могу это сделать?

Благодарю.

Поместите int который является вашим id в новый Intent .

 Intent intent = new Intent(FirstActivity.this, SecondActivity.class); Bundle b = new Bundle(); b.putInt("key", 1); //Your id intent.putExtras(b); //Put your id to your next Intent startActivity(intent); finish(); 

Затем возьмите идентификатор в своем новом Activity :

 Bundle b = getIntent().getExtras(); int value = -1; // or other values if(b != null) value = b.getInt("key"); 

Просто добавьте дополнительные данные в намерение, которое вы используете для вызова своей деятельности.

В активности вызывающего абонента:

 Intent i = new Intent(this, TheNextActivity.class); i.putExtra("id", id); startActivity(i); 

Внутри функции onCreate () вы вызываете:

 Bundle b = getIntent().getExtras(); int id = b.getInt("id"); 

Редактировать: К сожалению, Чарли Шин был быстрее.

Мне нравится делать это со статическим методом во втором действии:

 private static final String EXTRA_GAME_ID = "your.package.gameId"; public static void start(Context context, String gameId) { Intent intent = new Intent(context, SecondActivity.class); intent.putExtra(EXTRA_GAME_ID, gameId); context.startActivity(intent); } @Override protected void onCreate(Bundle savedInstanceState) { ... Intent intent = this.getIntent(); String gameId = intent.getStringExtra(EXTRA_GAME_ID); } 

Затем из вашей первой активности (и для чего-либо еще) вы просто выполните:

 SecondActivity.start(this, "the.game.id"); 

Существующие ответы (передать данные в Intent переданные startActivity() ), показывают нормальный способ решения этой проблемы. Существует еще одно решение, которое можно использовать в нечетном случае, когда вы создаете Activity, который будет запущен другим приложением (например, одним из действий редактирования в плагине Tasker ) и, следовательно, не контролирует Intent который запускает Activity .

Вы можете создать Activity -класс базового класса с конструктором с параметром, а затем производным классом, который имеет конструктор по умолчанию, который вызывает конструктор базового класса со значением:

 class BaseActivity extends Activity { public BaseActivity(String param) { // Do something with param } } class DerivedActivity extends BaseActivity { public DerivedActivity() { super("parameter"); } } 

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

Intereting Posts
Как я могу поместить фрагмент из backstack, не возобновив его? Используя пользовательские состояния, onCreateDrawableState никогда не вызывал Как назвать мой пакет android, если у меня нет сайта Получить экземпляр текущей активности android.intent.category.LAUNCHER Светящийся текст на кнопке с прозрачным фоном в макете с другим фоном Как читать свойства, определенные в local.properties в build.gradle На Android KitKat можно ли оверлейное представление заполнить весь экран? Google Maps режим управления URL-схемой не работает на Android Активность, перемещающаяся снизу вверх, но фоновая активность не должна перемещаться Как вы получаете / устанавливаете громкость мультимедиа (не громкость мелодии звонка) в Android? Сохранение камеры во время приостановки Android OpenGL .OBJ загрузчик файлов Как работать с файлом исходного кода, автоматически сгенерированным в процессе сборки Где документация filtercript (и как я могу ее использовать)? Плагин Maven для обфускации Java-кода