2013-11-18 3 views
0

Я работаю над приложением и нуждаюсь в помощи с сообщением, проходящим между двумя экранами. Первый экран - это форма регистрации с кнопкой изображения, которая должна показывать изображение пользователя на экране. Когда пользователь сначала открывает этот экран, ImageButton использует «defaultavatar.png» из выпадающей папки. При нажатии этой кнопки изображения пользователь направляется на экран с помощью GridView значков на выбор. Мне нужно передать номер изображения, отобранного обратно в действие регистрации, и соответственно изменить источник изображения ImageButton. Как мне это сделать? Это мой код в данный момент:Передача сообщений между действиями Android?

В источнике активности Регистраций:

Intent intent = getIntent(); 
     String imagePos = intent.getStringExtra(AvatarListActivity.IMAGE_NUMBER); 

     //String imageName = "@drawable/bigavatar" + imagePos; 
     String PACKAGE_NAME = getApplicationContext().getPackageName(); 
     ImageButton displayPic = (ImageButton) findViewById(R.id.displayPic); 
     int imgId; 

     if(imagePos != null) 
     { 
      imgId = getResources().getIdentifier(PACKAGE_NAME+":drawable/bigavatar"+imagePos, null, null); 
      displayPic.setImageBitmap(BitmapFactory.decodeResource(getResources(),imgId)); //src 
     } 
     else 
     { 
      imgId = getResources().getIdentifier(PACKAGE_NAME+":drawable/defaultavatar", null, null); 
      displayPic.setImageBitmap(BitmapFactory.decodeResource(getResources(),imgId)); //src 
     } 

В списке Аватар Активность:

GridView gridview = (GridView) findViewById(R.id.gridViewAvatars); 
     gridview.setAdapter(new ImageAdapter(this)); 

     gridview.setOnItemClickListener(new OnItemClickListener() { 
      public void onItemClick(AdapterView<?> parent, View v, int position, long id) { 
       //Toast.makeText(AvatarListActivity.this, "" + position, Toast.LENGTH_SHORT).show(); 
       Intent intent = new Intent(getBaseContext(), SignUpActivity.class); 

       intent.putExtra(IMAGE_NUMBER, position); 
       startActivity(intent); 
      } 
     }); 

Как я могу идти о поменяв изображений в зависимости от выбора пользователя ? (Примечание: все значки аватаров были пронумерованы как bigavatar1, bigavatar2, bigavatar3 и т. Д.). Пожалуйста, помогите как можно скорее и спасибо!

ответ

1

Вы можете обратиться к Android онлайн справки: Activity

начала деятельности и получения результатов

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

Иногда вы хотите получить результат от действия, когда оно закончится. Например, вы можете начать задание, которое позволяет пользователю выбрать человек в списке контактов; когда он заканчивается, он возвращает человека, которого выбрали . Для этого вы вызываете версию startActivityForResult (Intent, int) со вторым целочисленным параметром, идентифицирующим вызов. Результат вернется через ваш метод onActivityResult (int, int, Intent) .

Когда действие завершается, он может вызвать setResult (int), чтобы вернуть данные обратно его родительскому элементу. Он должен всегда предоставлять код результата, который может быть стандартными результатами RESULT_CANCELED, RESULT_OK или любыми пользовательскими значениями , начинающимися с RESULT_FIRST_USER. Кроме того, он может по желанию вернуть обратно намерение, содержащее любые дополнительные данные, которые он хочет. Вся эта информация появляется на родительском Activity.onActivityResult(), вместе с исходным идентификатором целого.

поэтому вы должны использовать startActivityForResult. и привязывать данные к намерениям при его отправке. вы можете использовать bundle для прикрепления данных.

+0

Использование startActivityForResult (int, int) и onActivityResult (int, int, Intent) работало отлично! Спасибо тонну :) –

+0

Я нашел эту страницу полезной: http: //www.vogella.com/articles/AndroidIntent/article.html –

1

В зависимости от того, сколько изображений у вас есть, sharedPreferences может быть вашей ставкой. На основе любого изображения, которое пользователь выбирает в вашем списке аватаров, дайте ему число. EX: если у вас 10 изображений, назначьте каждому номер. Используйте sharedPreferences, чтобы импортировать выбор номера в ваше первое действие, и затем скажет, какой из них отображать через оператор if.

+0

Кажется, SharedPreferences действительно является решением моей проблемы! Не могли бы вы помочь мне с примером кода, потому что я не могу полностью следовать синтаксису и примерам кода, приведенным на сайтах разработчиков и других блогах ... –

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