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

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

Войти
Регистрация
Восстановить пароль
 
fundator
Сообщений: n/a
#1

Как организовать последовательную передачу данных между тремя активностями? - Android

15.07.2013, 20:01. Просмотров 589. Ответов 0
Метки нет (Все метки)

Здравствуйте!
Столкнулся с проблемой.
Есть потребность в справочном приложении, которое будет выглядеть следующим образом:
Из первой активности (ListView) через intent происходит передача картинки во вторую активность в зависимости от выбранного элемента.
Во второй активности необходимо перейти к комментарию в виде текста в третьей активности. Вывод через нажатие иконки в Action Bar.
Подскажите, пожалуйста, как можно реализовать передачу текста в третью активность в строгой зависимости от первого выбора.

Первая активность.

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
public class FirstActivity extends ListActivity {
    /** Called when the activity is first created. */
    public TextView Text;
    public ArrayList<ListData> catalog;
    String[] names;
    String[] descriptionsAlg;
 
    int img = R.drawable.ic_item_alg;
    int[] png = { R.drawable.opisanie, R.drawable.predosterezenie };
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
 
        setContentView(R.layout.activity_first);
 
        names = new String[2];
        names[0] = getResources().getString(R.string.str_o);
        names[1] = getResources().getString(R.string.str_p);
 
        descriptionsAlg = new String[2];
        descriptionsAlg[0] = getResources().getString(R.string.txt_o);
        descriptionsAlg[1] = getResources().getString(R.string.txt_p);
 
        // Создаем массив объектов ListData и заполняем их данными
        catalog = new ArrayList<ListData>();
        for (int i = 1; i <= 2; i++) {
            catalog.add(new ListData(names[i - 1], png[i - 1], img,
                    descriptionsAlg[i - 1]));
        }
 
        // Создаем адаптер данных
        CatalogAdapter catAdapter;
        catAdapter = new CatalogAdapter(this, catalog);
        setListAdapter(catAdapter);
    }
 
    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        // Проверяем ориентацию экрана
        if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
 
        } else if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
 
        }
 
    }
 
    public void onListItemClick(ListView parent, View v, int position, long id) {
        Intent intent = new Intent(this, SecondActivity.class);
 
        intent.putExtra(SecondActivity.PICTURE, png[position]);
 
        intent.putExtra(ThirdActivity.DESCRIPTIONSALG,
                descriptionsAlg[position]);
 
        startActivity(intent);
    }
 
    public TextView getText() {
        return Text;
    }
 
    public void setText(TextView Text) {
        this.Text = Text;
    }
Вторая активность.

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
public class SecondActivity extends Activity implements OnClickListener {
    public static final String PICTURE = "picture";
 
    /** Called when the activity is first created. */
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        // Получаем данные от деятельности FirstActivity
        Intent intent = getIntent();
 
        int imageId = intent.getIntExtra(PICTURE, R.drawable.ic_launcher);
        ImageView image = (ImageView) findViewById(R.id.aboutImage);
        image.setImageDrawable(getResources().getDrawable(imageId));
 
    }
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main_second, menu);
        return true;
    }
 
    public void onClick(View v) {
        finish();
    }
 
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
 
        case R.id.item_2: {
            Intent intent = new Intent(this, ThirdActivity.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            startActivity(intent);
            return true;
 
        }
        case R.id.item_1: {
            Intent intent = new Intent(this, FirstActivity.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            startActivity(intent);
            return true;
        }
        default:
            return super.onOptionsItemSelected(item);
 
        }
    }
Третья активность.

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
public class ThirdActivity extends Activity implements OnClickListener {
 
    public static final String DESCRIPTIONSALG = "descriptionsAlg";
 
    /** Called when the activity is first created. */
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_third);
        // Получаем данные от деятельности FirstActivity
 
        Intent intent = getIntent();
 
        int textId = intent.getIntExtra(DESCRIPTIONSALG, R.string.txt_o);
 
        TextView text = (TextView) findViewById(R.id.TextViev);
        text.setText(getResources().getString(textId));
 
    }
 
    public static String getDescriptionsalg() {
        return DESCRIPTIONSALG;
    }
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main_third, menu);
        return true;
    }
 
    public void onClick(View v) {
        finish();
    }
 
    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        // Проверяем ориентацию экрана
        if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
 
        } else if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
 
        }
    }
 
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case R.id.item_1: {
            Intent intent = new Intent(this, FirstActivity.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            startActivity(intent);
            return true;
        }
        default:
            return super.onOptionsItemSelected(item);
 
        }
    }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.07.2013, 20:01     Как организовать последовательную передачу данных между тремя активностями?
Посмотрите здесь:

Передача данных между активностями Android
Переход между активностями! Android
реализовать передачу и прием Android
Android Работа с активностями
Android MediaPlayer, рывок перезапуска музыки при переходе между активностями
Android Передача данных между тремя Activity
Как организовать сервис? Android
Android Как сделать передачу данных по bluetooth
Android Затруднение с переключением между активностями
Android Кто как передаёт коллекции между активностями, классами?
Как организовать сохранение данных при регистрации Android
Как реализовать передачу массива из одного фрагмента в другой Android

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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