Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 5.00
tree00
1 / 1 / 0
Регистрация: 13.01.2014
Сообщений: 34
#1

Изменение параметров активити из другого активити - Android

18.01.2014, 12:23. Просмотров 1607. Ответов 6
Метки нет (Все метки)

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

final ImageView img=(ImageView)findViewById(R.id.image1);
img.setBackgroundResource(R.drawable.animationdemo); ------- вместо animationdemo поставить animationdemo2
img.post(new Runnable() {

в другом активити.



Сложность заключается в том что на 1 активити имеются 2 кнопки, 1-я меняет свойства 2 активити, а вторая уже переходит на 2 активити.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
angryrobot
Командир зеленых роботов
346 / 283 / 53
Регистрация: 08.10.2013
Сообщений: 564
18.01.2014, 12:38     Изменение параметров активити из другого активити #2
Запуск активити осуществляется при помощи интента в который вы можете положить почти что угодно. Я предлагаю вам сделать так:
* Заранее создать интент который будет запускать вторую активти.
* При нажатии первой кнопки положить в него R.drawable.animationdemo2
* При нажатии второй кнопки запускать активити используя заранее созданный интент
* Во второй активити при старте проверять наличие R.drawable.animationdemo2 внутри интента, и если там оно есть то загружаем его в качестве фона.
tree00
1 / 1 / 0
Регистрация: 13.01.2014
Сообщений: 34
18.01.2014, 14:01  [ТС]     Изменение параметров активити из другого активити #3
Вот интент запускающий вторую активити

@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.Button1:
Intent intent = new Intent(this, MainActivity2.class);
startActivity(intent);
// TODO Call second activity
break;
default:
break;
}


Вкладываем в интент R.drawable.animationdemo2

@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.Button2:
intent.putExtra(R.drawable.animationdemo2);
}


во 2 активити проверяем и загружаем в качестве фона



final ImageView img=(ImageView)findViewById(R.id.image1);
if
int count = getIntent().getIntExtra(R.drawable.animationdemo2);
{
img.setBackgroundResource(R.drawable.animationdemo2);
}

else
img.setBackgroundResource(R.drawable.animationdemo);
img.post(new Runnable()
{
@Override
public void run()
{
AnimationDrawable animation=(AnimationDrawable)img.getBackground();
animation.start();
}
});




Че-то не работает, или я чего-то напортачил?
YuraAAA
1564 / 1306 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
18.01.2014, 14:27     Изменение параметров активити из другого активити #4
tree00, во-первых, оформляйте пожалуйста код с помощью тэгов, он слабо читаемый.
Во-вторых, бросилось в глаза:
Уберите строки
Java
1
2
default:
break;
Кладём данные:
Java
1
intent.putExtra("some_key", R.drawable.animationdemo2);
Получаем:
Java
1
2
3
4
Bundle extras = getIntent().getExtras();
if (extras != null) {
    int value = extras.getString("some_key");
}
tree00
1 / 1 / 0
Регистрация: 13.01.2014
Сообщений: 34
18.01.2014, 18:20  [ТС]     Изменение параметров активити из другого активити #5
Целый день лазил по гуглу но хоть убейте ничего не понял, я сделал как вы сказали но всеравно выдает ошибку


вот полный код первой активити :



Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package com.example.projekt12;
 
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageButton;
 
public class MainActivity extends Activity implements OnClickListener {
 
  ImageButton btnActTwo;
 
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
 
    btnActTwo = (ImageButton) findViewById(R.id.BtnAct2);
    btnActTwo.setOnClickListener(this);
    
    btnActTwo = (ImageButton) findViewById(R.id.BtnAct3);
    btnActTwo.setOnClickListener(this);
    
  }
 
  @Override
  public void onClick(View v) {
    switch (v.getId()) {
    case R.id.BtnAct2:
        Intent intent = new Intent(this, MainActivity2.class);
        startActivity(intent);
      // TODO Call second activity
      break;
    
    }
    
   
       
        switch (v.getId()) {
        case R.id.BtnAct3:
       Intent.putExtra("some_key", R.drawable.animationdemo2);  // выдает ошибку (cannot make a static reference to the non-static method putextra(string, int) from the type intent)
            
        }
        
    }
     
}



вот полный код второй активити:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
package com.example.projekt12;
 
import android.app.Activity;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.graphics.drawable.AnimationDrawable;
import android.view.MotionEvent;
import android.widget.ImageView;
 
 
 
 
public class MainActivity2 extends Activity  {
    
    MediaPlayer Aud;
    MediaPlayer Aud2;
    
 
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main_activity2);
       
    Aud = MediaPlayer.create(this, R.raw.alarm);
    Aud.setLooping(true);
    Aud.start();
   
    final ImageView img=(ImageView)findViewById(R.id.image1);
    Bundle extras = getIntent().getExtras();
    if (extras != null) {
        int value = extras.getString("some_key");        // тут выдает такую ошибку (Type mismatch: cannot convert from String to int)
    }
    else
    img.setBackgroundResource(R.drawable.animationdemo);
    img.post(new Runnable() {
        
        @Override
        public void run() {
            AnimationDrawable animation=(AnimationDrawable)img.getBackground();
             animation.start();
            
        }
    });
  
     
}
  @Override
  public boolean onTouchEvent(MotionEvent event) 
  {
      if(event.getAction() == MotionEvent.ACTION_DOWN) {
      Aud2 = MediaPlayer.create(this, R.raw.trew1);
      Aud2.setLooping(true);  
      Aud2.start();  
      }
       if (event.getAction() == MotionEvent.ACTION_UP)
      {
        Aud2.reset();  
      }
      return super.onTouchEvent(event);
  }
  
  @Override
  public void onPause(){
  Aud.stop();
  finish();
    super.onPause();
  }
  }

Напротив мест ошибок стаят пояснения. Объясните пожалуйста может мне что-то задать надо или тип Statik задать непонятно в чем проблема?
YuraAAA
1564 / 1306 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
18.01.2014, 18:27     Изменение параметров активити из другого активити #6
Цитата Сообщение от tree00 Посмотреть сообщение
Intent.putExtra("some_key", R.drawable.animationdemo2)
intent с малой буквы. Иначе это попытка вызвать статический метод Intent класса.

Java
1
Intent intent = new Intent(this, MainActivity2.class);
вынести перед switch()

и получится как-то так

Java
1
2
3
4
5
6
7
8
9
10
11
12
@Override
    public void onClick(View v) {
        Intent intent = new Intent(this, MainActivity2.class);
        switch (v.getId()) {
            case R.id.BtnAct2:
                startActivity(intent);
                break;
            case R.id.BtnAct3:
                intent.putExtra("some_key", R.drawable.animationdemo2);
                startActivity(intent);
        }
    }
extras.getString() вернёт строку. Пишите
Java
1
int value = extras.getInt("some_key");
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.01.2014, 21:59     Изменение параметров активити из другого активити
Еще ссылки по теме:

Android Работа с Handler из другого активити
Android Не отображается игровое поле после выхода из другого активити
Как изменится стек после вызова активити другого приложения Android
Android Старт активити из другого потока
На телефоне highscreen 3 на всех активити происходит быстрый самовозврат к главной активити Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
tree00
1 / 1 / 0
Регистрация: 13.01.2014
Сообщений: 34
19.01.2014, 21:59  [ТС]     Изменение параметров активити из другого активити #7
чет не срабатывает, как я понял в "some_key" подставляется R.drawable.animationdemo2 ?

Добавлено через 13 минут
и да еще

Java
1
2
3
4
5
6
7
8
9
10
11
12
@Override
    public void onClick(View v) {
        Intent intent = new Intent(this, MainActivity2.class);
        switch (v.getId()) {
            case R.id.BtnAct2:
                startActivity(intent);
                break;
            case R.id.BtnAct3:
                intent.putExtra("some_key", R.drawable.animationdemo2);
                startActivity(intent);
        }
    }
тут последний startActivity(intent); не нужен, ведь эта кнопка должна передавать данные на первую а уже первая запускать активити2 с нужными параметрами
Yandex
Объявления
19.01.2014, 21:59     Изменение параметров активити из другого активити
Ответ Создать тему
Опции темы

Текущее время: 12:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru