Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/19: Рейтинг темы: голосов - 19, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 30.12.2013
Сообщений: 6

Передача двойного массива в другое активити

30.12.2013, 04:47. Показов 3874. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток, возникла проблема с массивом!
Пытаюсь передать через putExtra двойной массив в другое активити и оно не хочет принимать его.
Может надо привести к виду более приятному или передать другим способом в конце концов?
Собственно массив Chest[21][4].

MainActivity
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
    Button btnAll,btnArm,btnBack,btnChest,btnHip,btnLeg,btnStomach;
    RadioGroup radioGroup;  
 
    public static final String[][] Chest={
        {"1","0","m. pectoralis major","clavicula"},
        {"2","0","m. pectoralis major","manubnum et corpussterni"},
        {"3","0","m. pectoralis major","cartilagines costae 2 #8211 7"},
        {"4","1","m. pectoralis major","crista tuverculi majoris human"},
        {"5","0","m. pectoralis minor","costae 3-5"},
        {"6","1","m. pectoralis minor","pr. coracoideus scapulae"},
        {"7","0","m. subclavius","cartilagines costae 1"},
        {"8","1","m. subclavius","extrenulas acronuales claviculae"},
        {"9","0","m. serratus arterior","costae 1 #8211 9"},
        {"10","1","m. serratus arterior","margo medialis et argulus interior scapule"},
        {"11","0","m. intercostales externi","margo interior costae(up)"},
        {"12","1","m. intercostales externi","margo superior costae(down)"},
        {"13","0","m. intercostales interni","margo superior costae(down)"},
        {"14","1","m. intercostales interni","margo inferior costae(up)"},
        {"15","0","m. transversus thoracis","pr. xiphoideos et sterni"},
        {"16","1","m. transversus thoracis","costae 2 #8211 6"},
        {"17","0","m. subcostales","costae 10 #8211 12"},
        {"18","1","m. subcostales","внутр. пов-ть влагалищных ребер"},
        {"19","0","m. levatores coastrum","pr. transversus cerv 7"},
        {"20","0","m. levatores coastrum","pr. transversus thor 1 #8211 11"},
        {"21","1","m. levatores coastrum","argulus costae"}
};
 
@Override
protected void onCreate(Bundle savedInstanceState){
                ...
}
 
public void onClick(View v) {
        Intent intent = new Intent(MainActivity.this, TestActivity.class);
        
        switch (v.getId()) {
        ..
        case R.id.btnChest:
            switch (radioGroup.getCheckedRadioButtonId()) {
            case R.id.radioStart:
                intent.putExtra("state", 0);
                intent.putExtra("massive",Chest);
              break;
            case R.id.radioClose:
                intent.putExtra("state", 1);
                intent.putExtra("massive",Chest);
              break;
            }
            startActivity(intent);
            break;
            ..
        }
      }
TestActivity
Java
1
2
3
4
5
6
7
8
    String[][] test;
    Integer state;
        protected void onCreate(Bundle savedInstanceState) {
                ...
        test=(String[][]) getIntent().getExtras().get("massive");
        state=getIntent().getExtras().getInt("state");  
                ...
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.12.2013, 04:47
Ответы с готовыми решениями:

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

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

Передача константы в другое активити
Здравствуйте. Задача такая: нужно из одного активити передать в другое константу с именем xml файла. т.е. в первом активити при...

6
194 / 154 / 23
Регистрация: 16.08.2013
Сообщений: 738
30.12.2013, 09:32
Выложите полный код второго активити.
0
0 / 0 / 0
Регистрация: 30.12.2013
Сообщений: 6
30.12.2013, 10:48  [ТС]
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
package com.example.anatomy;
 
import java.util.ArrayList;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.ArrayAdapter;
import android.widget.ListView;
 
public class TestActivity extends Activity {
    
    String[][] test;
    ListView lvMain;
    Integer state,size;
    ArrayList<String> alCon = new ArrayList<String>();
    ArrayList<String> alName = new ArrayList<String>();
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_test);
        test=(String[][]) getIntent().getExtras().get("massive");
        state=getIntent().getExtras().getInt("state");
        for(int i=0;i<test.length;i++){
            if(test[i][1]==Integer.toString(state)){
                alCon.add(test[i][3]);
                alName.add(test[i][2]);
            }
        }
        //alCon.size();
        String[] myArray = {};
        myArray = alCon.toArray(new String[alCon.size()]);
        lvMain = (ListView) findViewById(R.id.lvMain);
        lvMain.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
 
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_list_item_multiple_choice, myArray);
 
        lvMain.setAdapter(adapter);
    }
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.test, menu);
        return true;
    }
 
}
Код пока в сыром виде, сначала хотел проверить передаются ли данные, но собственно на этом пока и остановился.
0
Командир зеленых роботов
 Аватар для angryrobot
349 / 286 / 54
Регистрация: 08.10.2013
Сообщений: 576
30.12.2013, 11:01
Вот так можно получить доступ ко всем элементами двумерного массива во второй активити:
Java
1
2
3
4
5
6
7
8
9
10
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        Intent i = getIntent();
        Object entries[] = (Object[]) i.getExtras().get("massive");
        for (Object obj : entries) { 
            System.out.println(Arrays.toString((String[]) obj));
        }
    }
В результате в логкат выведется вот это:
12-30 10:54:46.855: I/System.out(5599): [1, 0, m. pectoralis major, clavicula]
12-30 10:54:46.855: I/System.out(5599): [2, 0, m. pectoralis major, manubnum et corpussterni]
12-30 10:54:46.855: I/System.out(5599): [3, 0, m. pectoralis major, cartilagines costae 2 #8211 7]
12-30 10:54:46.855: I/System.out(5599): [4, 1, m. pectoralis major, crista tuverculi majoris human]
12-30 10:54:46.855: I/System.out(5599): [5, 0, m. pectoralis minor, costae 3-5]
....
....
....


Это первое решение которое пришло в голову. А зачем передавать этот массив из одной активити в другую? Возможно есть более простой способ который вам подойдет. Сделайте наследник класса Application, пропишите его в манифесте. В этом классе сделайте публичное поле которое будет массивом. А в коде любой активити вызывайте метод getApplication(), делайте приведение к %имя_вашего_наследника_Application% и потом просто читаете значение поля являющегося вашим массивом.
1
0 / 0 / 0
Регистрация: 30.12.2013
Сообщений: 6
30.12.2013, 12:00  [ТС]
Спасибо огромное!
Это решение наверное лучше подойдет.
0
0 / 0 / 0
Регистрация: 30.12.2013
Сообщений: 6
02.01.2014, 23:13  [ТС]
Попробовал создать класс, который является наследником Application. Но программа перестала запускаться. Новый файл для класса создал в папке /res rightbuttonclick->new->class
сам класс MyApp.java
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package com.example.anatomy;
 
import android.app.Application;
 
class MyApp extends Application {
        @Override
        public void onCreate() {
            super.onCreate();
            }
        
        public String[][] getChest(){
            return new String[][]{...};
        }
 
                public String[][] getArm(){
            return new String[][]{...};
        }
                ...
}
Прописываю в манифесте
Java
1
2
3
<application
    android:name=".MyApp"
    ...>
Цитата Сообщение от angryrobot Посмотреть сообщение
В этом классе сделайте публичное поле которое будет массивом. А в коде любой активити вызывайте метод getApplication(), делайте приведение к %имя_вашего_наследника_Application% и потом просто читаете значение поля являющегося вашим массивом.
Во второй активити:
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
public class TestActivity extends Activity {
    ListView lvMain;
    Integer state,size;
    MyAp myAp;
    String[][] test1;
    ArrayList<String> alCon = new ArrayList<String>();
    ArrayList<String> alName = new ArrayList<String>();
 
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_test);
switch(getIntent().getExtras().getInt("massive")){
        case 0:
            test1=myAp.getChest();
            break;
        case 1:
            test1=myAp.getArm();
            break;}
        state=getIntent().getExtras().getInt("state");
        for (int i=0;i<test1.length;i++) {
            if(Integer.parseInt(test1[i][2])==state){
            alCon.add(test1[i][3]);
            alName.add(test1[i][2]);
            }
        }
        
        String[] myArray = {};
        myArray = alCon.toArray(new String[alCon.size()]);
        lvMain = (ListView) findViewById(R.id.lvMain);
        lvMain.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
 
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_list_item_multiple_choice, myArray);
 
        lvMain.setAdapter(adapter);
                }
Вот манифест:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 <application
        android:name=".MyApp"
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme"> 
        <activity
            android:name="com.example.anatomy.MainAnatomy"
            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.anatomy.TestActivity"
            android:label="@string/title_activity_test" >
        </activity>
    </application>
Добавлено через 6 минут
Манифест не хочет принимать, т.к. при удалении этой строки программа заработала, но данные не передает в другое активити.
<application
android:name=".MyApp"
...>
0
Командир зеленых роботов
 Аватар для angryrobot
349 / 286 / 54
Регистрация: 08.10.2013
Сообщений: 576
02.01.2014, 23:30
Цитата Сообщение от FRCJocker Посмотреть сообщение
Новый файл для класса создал в папке /res rightbuttonclick->new->class
Нечего ему там делать в папке res. Положите его в ту же папку где лежат файлы активти.

Добавлено через 5 минут
А в строке test1=myAp.getChest(); у вас NullPointerException произойдет. Ибо нужно сначала сделать myAp = (MyApp) getApplication();
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.01.2014, 23:30
Помогаю со студенческими работами здесь

Передача с одного активити в другое
Помогите!!!Есть два активити в первом я ввожу данные в editText как мне сделать передачу в listview другого активити.Я сделал но у меня...

Передаем image в другое активити
Привет! Пытаюсь при нажатии в recyclerView при нажатии на картинку в строке открыть ее в большом варианте! делаю так в самом адаптере...

Сделать кнопку перехода на другое активити
Есть текст хочу добавить кнопку,чтобы она переключала на другое активити и там было видео или картинка.Как реализовать ?

Как вызвать другое активити в контексном меню
Как вызвать другое активити в контексном меню

Не передаются значения при их передаче в другое активити
Собственно, обработчик по клику в первом активти: Intent shopintent = new Intent(MainActivity.this, Shop.class); ...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru