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

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

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

Передача данных между активити - Программирование Android

30.01.2014, 12:46. Просмотров 3537. Ответов 28
Метки нет (Все метки)

как сделать так чтобы при нажатии на кнопку в первом активити изменялись данные во втором активити, но без перехода в него, а переход осуществлялся при нажатии второй кнопки. Вот полный код первого и второго активити:
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
package com.example.activity01;
 
import android.app.Activity;
import android.content.Intent;
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) {
      Intent intent = new Intent(this, MainActivity2.class);
      switch (v.getId()) {
          case R.id.BtnAct2:
              startActivity(intent);
              break;
          case R.id.BtnAct3:
              intent.putExtra("animm", R.drawable.animationdemo2);
              
      }
  }
}



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
70
71
package com.example.activity02;
 
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.getInt("animm");
        
}
    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();
  }
  }

Надо поменять animationdemo на animationdemo2. Что я тут сделал не так?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.01.2014, 12:46
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Передача данных между активити (Программирование Android):

Передача данных между Активити - Программирование Android
Все никак не могу разобраться, как передавать данные между активити? я до этого пользовался статическими полями, но это кажется не совсем...

Передача чисел между активити - Программирование Android
Реакция на нажатие кнопки, переход в другое активити и передача значения переменной GAME_SCORE = 15; Intent intent = new...

Передача ссылки на объект между Активити - Программирование Android
Добрый день уважаемые! Подскажите пожалуйста как передать ссылку на объект в другое активити, а потом получить обратно ссылку именно...

Передача данных в другое активити - Программирование Android
Доброго времени суток, возникла проблема со списком! Собственно нужно выбранный элемент из списка передать в другую активность и...

Передача данных между устройствами - Программирование Android
Всем привет! Подскажите, пожалуйста, как передать значение переменной на другое устройство. Думал использовать wifi direct. Но как это...

Передача данных между потоками - Программирование Android
Всем доброго времени суток. В общем есть приложение, которое парсит сайт с музыкой, добавляет результат в listView и затем выводит...

28
kirawa
34 / 34 / 1
Регистрация: 12.11.2013
Сообщений: 338
30.01.2014, 13:02 #2
гугли Intent'ы , зачем менять 2 активити если оно не доступно глазу твоему
0
korsaj
148 / 117 / 9
Регистрация: 16.08.2013
Сообщений: 514
30.01.2014, 14:32 #3
Можно сделать класс посредник доступный из обоих активити ))
0
yura91
1 / 25 / 2
Регистрация: 23.10.2013
Сообщений: 2,310
20.08.2014, 13:28 #4
да как передать данные в другое активити без вызова метода startactivity то есть не переходя в него??? Может использовать обьект Bunndle и его метод putInt можно так???
0
NiRamz
211 / 211 / 16
Регистрация: 26.12.2010
Сообщений: 691
20.08.2014, 13:40 #5
запихать данные в intent, во втором активити в манифесте описать схему этих данных, вызвать startActivity с action_view, данные прилетят в onNewIntent во втором активити
0
yura91
1 / 25 / 2
Регистрация: 23.10.2013
Сообщений: 2,310
20.08.2014, 13:47 #6
а как в манифесте прописать схему можете фрагмент кода приложить??
0
NiRamz
211 / 211 / 16
Регистрация: 26.12.2010
Сообщений: 691
20.08.2014, 13:49 #7
http://developer.android.com/guide/topics/manifest/data-element.html
0
yura91
1 / 25 / 2
Регистрация: 23.10.2013
Сообщений: 2,310
21.08.2014, 01:40 #8
XML
1
2
3
<data android:scheme="something" 
      android:host="project.example.com" пакет проекта
      android:mimeType="int"целый тип
" />

если так описать данные в манифесте второго активити будет правильно(мне надо целое передать)??? я просто английский не очень понимаю подскажите если что?

Добавлено через 8 часов 30 минут
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
package com.example.newintent;
 
 
import android.R.string;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
 
public class  MainActivity  extends Activity implements OnClickListener{
 
    Button btn;
     String a = "vesh";
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        setContentView(R.layout.main);
         btn = (Button) findViewById(R.id.button1);
         
         Intent intent = new Intent(this, MainActivity2.class);
            startActivity(intent);
            btn.setOnClickListener(this);
        /*Чтобы элемент интерфейса имел
         * контекстное меню, его нужно
         * зарегистрировать*/
        
        
    }
 
    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
         switch (v.getId()) {
            case R.id.button1:
              // TODO Call second activity
                Intent intent = new Intent(Intent.ACTION_VIEW);
                intent.putExtra("peredacha", a);
                startActivity(intent);
                Intent intent1 = new Intent(this, MainActivity2.class);
                startActivity(intent1);
              break;
            default:
              break;
            }
        
    }
}
первое активити

Добавлено через 1 минуту
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
package com.example.newintent;
 
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;
 
public class MainActivity2 extends Activity{
    TextView etFName;
    String b;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main2);
        
        etFName = (TextView) findViewById(R.id.textView1);
        
        
    }
    
    @Override
            public void onNewIntent(Intent intent) {
                super.onNewIntent(intent);
                 
                Intent intenty = getIntent();
                String fName = intent.getStringExtra("fname");
                etFName.setText("Your name is: " + fName + " ");
}
}
Второе активити

Добавлено через 1 минуту
XML
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
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.newintent"
    android:versionCode="1"
    android:versionName="1.0" >
 
    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="19" />
 
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.newintent.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
 
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
         <activity
            android:name="com.example.newintent.MainActivity2"
            android:label="@string/app_name" >
            <intent-filter>
                    <action android:name="android.intent.action.VIEW" />
                    
                </intent-filter>
      <data android:scheme="something" 
      android:host="com.example.newintent" 
      android:mimeType="string"/>
            </activity>
    </application>
 
</manifest>
манифест

Добавлено через 1 минуту
Почему то не получается передать из первого активити во второе переменную типа String в чем проблема что я делаю не так как исправить???

Добавлено через 2 часа 23 минуты
просто я пробую передать данные через ACTIO_VIEW в другое активити ав данные почему то не передаются ?? Может я в манифесте данные не правильно прописал?
0
Spelcrawler
527 / 497 / 111
Регистрация: 12.03.2014
Сообщений: 1,653
Завершенные тесты: 1
21.08.2014, 12:20 #9
Передаете peredacha, а получаете fName. И причем здесь манифест?

Добавлено через 1 минуту
Еще и два интента, зачем?
0
Pablito
2506 / 1990 / 620
Регистрация: 12.05.2014
Сообщений: 6,953
Завершенные тесты: 1
21.08.2014, 12:33 #10
автор, создай любой класс в проекте и передавай все через него, не мучайся
у тебя свой проект, нет необходимости извращаться и передавать все через интенты
что-то типа
Java
1
2
3
4
public class MyCoolProp {
    static String MyCoolSharedString;
    static int MyCoolSharedInt;
}
0
yura91
1 / 25 / 2
Регистрация: 23.10.2013
Сообщений: 2,310
21.08.2014, 14:34 #11
ну да но просто создавать целый класс для одной переменной не очень корректно мне кажется
0
yura91
1 / 25 / 2
Регистрация: 23.10.2013
Сообщений: 2,310
21.08.2014, 14:45 #12
Кстати почему при указании в манифесте action с ACTION_VIEW и дальше вызова интента с ACTION_VIEW открывается такое оено как показано на скрине?? Видимо у этого стандартного окна тоже в манифесте ACTION_VIEW так это? как избежать эту ситуацию и передать данные в то активити куда мне надо??
0
Миниатюры
Передача данных между активити  
yura91
1 / 25 / 2
Регистрация: 23.10.2013
Сообщений: 2,310
21.08.2014, 14:54 #13
мне просто интересен вопрос не подскажите??

Добавлено через 4 минуты
вероятно я неправильно вызов делаю startActivity??

Добавлено через 2 минуты
делаю так

Java
1
2
3
Intent intent = new Intent(Intent.ACTION_VIEW);
                intent.putExtra("peredacha", a);
                startActivity(intent);

первое активити

Java
1
2
3
Intent intenty = getIntent();
                String fName = intenty.getStringExtra("peredacha");
                etFName.setText("Your name is: " + fName + " ");
второе активити все верно так??

Добавлено через 58 секунд
вот манифест второго активити

XML
1
2
3
4
5
6
7
8
9
10
11
<activity
            android:name="com.example.newintent.MainActivity2"
            android:label="@string/app_name" >
            <intent-filter>
                    <action android:name="android.intent.ACTION_VIEW" />
                    
                </intent-filter>
      <data android:scheme="something" 
      android:host="com.example.newintent" 
      android:mimeType="string"/>
            </activity>
Добавлено через 41 секунду
Почему происходит то что на скрине а не передает данные во второе активити??
0
kirawa
34 / 34 / 1
Регистрация: 12.11.2013
Сообщений: 338
21.08.2014, 16:29 #14
Java
1
2
3
4
5
6
7
8
Intent intent = new Intent(context, XXX.class);
        intent.putExtra("айди", id);
        startActivityForResult(intent, 1);
 
 
 
 Bundle bundle = getIntent().getExtras();
  id = bundle.getLong("айди");
0
yura91
1 / 25 / 2
Регистрация: 23.10.2013
Сообщений: 2,310
21.08.2014, 20:38 #15
id = bundle.getLong("айди"); возвращает тип Bundle значит id тип Bundle должно иметь ?? как тогда сохранение в String во втором активити?

Добавлено через 2 часа 46 минут
и потом мне нужен не нужен переход к активити которому я передаю данные

Добавлено через 1 минуту
Java
1
2
3
Intent intent = new Intent(Intent.ACTION_VIEW);
                intent.putExtra("peredacha", a);
                startActivity(intent);
Добавлено через 1 минуту
Java
1
2
3
Intent intenty = getIntent();
                String fName = intenty.getStringExtra("peredacha");
                etFName.setText("Your name is: " + fName + " ");
я так пытаюсь делать так правильно??

Добавлено через 2 минуты
XML
1
2
3
4
5
6
7
8
9
10
11
<activity
            android:name="com.example.newintent.MainActivity2"
            android:label="@string/app_name" >
            <intent-filter>
                    <action android:name="android.intent.ACTION_VIEW" />
                    
                </intent-filter>
      <data android:scheme="something" 
      android:host="com.example.newintent" 
      android:mimeType="string"/>
            </activity>
а манифест у второго активити такой да должен быть?? Просто почему когда я так делаю вылазит какое то активити то что на скрине?? а правильно сделать ?? подскажите как исправить??
0
21.08.2014, 20:38
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.08.2014, 20:38
Привет! Вот еще темы с ответами:

Передача данных между активностями - Программирование Android
к примеру есть 2 активности первая public class first_act extends Activity { @Override protected void onCreate(Bundle...

Передача данных между ListView - Программирование Android
Доброго времени суток форумчане! Не получается решить одну проблему, надеюсь на вашу помощь. В классе фрагмента есть метод onCreateView,...

Передача данных между activity - Программирование Android
Здравствуйте! Для передачи данных между Activity требуется Пользователь вводит данные в строку(текст)-где этот param...

Передача данных между Activity - Программирование Android
Доброго времени суток, господа. Такой вопрос: с точки зрения ООП програмирования и программирования в целом, каким образом практичнее...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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