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

Передача значения из одного класса в другой

08.04.2017, 20:19. Показов 1580. Ответов 7

Студворк — интернет-сервис помощи студентам
Доброго времени суток! Проблема следующая: В MainActivity моего проекта лежит список, мне нужно передать идентификатор нажатого элемента списка в другое активити и там по нажатию определенной кнопки вывести в лог. Перепробывал кучу вариантов в лог передает дефолтное значение . Чувствую что где то косяк, не пойму где, помогите новичку. Код адаптера напишу еслми нужен .код 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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
public class MainActivity extends AppCompatActivity {
    public ArrayList<GroupItem> names = new ArrayList<GroupItem>(); // аррай лист с именами груп
    ListView groupList; // непосредственно список
    BoxAdapter boxAdapter;
    SharedPreferences sPref;
 
   public long GroupID;
 
    private static final String TAG = "myLogs";
    final String SAVE = "Saved text";
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        groupList = (ListView) findViewById(R.id.listview_01);
        groupName();
        boxAdapter = new BoxAdapter(this,names); // инициализация кастомного адаптера
        groupList.setAdapter(boxAdapter);
        groupList.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                setGroupID(boxAdapter.getItemId(position));//ПРИСВАИВАЮ ID ПЕРЕМЕННОЙ
                Log.d(TAG, "itemClick: position = " +
                        position + ", id = " + id + ", " + parent.getAdapter().getItem(position));
                saveID();// СОХРАНЯЮ В ПРЕФ
               Intent intent = new Intent(MainActivity.this, Activity_GroupSelected.class );
                startActivity(intent);
 
            }
        });
    }
 
   private void saveID(){
        sPref = getPreferences(MODE_PRIVATE);
       SharedPreferences.Editor ed = sPref.edit();
       ed.putLong(SAVE,getGroupID());
       ed.apply();
       Log.d(TAG,"Данные сохранены");
    }
 
    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.d(TAG,"onDestroy");
    }
 
    void groupName(){
       ...
    }
    public void setGroupID(long GroupID){
        this.GroupID= GroupID;
    }
 
    public long getGroupID(){
        return GroupID;
    }
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }
 
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
 
        switch (id){
            case R.id.action_about:
                Intent intent = new Intent(MainActivity.this,Activity_about.class); // переход в активити о приложении из меню тулбара
                startActivity(intent);
        }
 
        return super.onOptionsItemSelected(item);
    }
 
}


участок кода активити где нужно вывести в лог значение( МЕТОД loadID)

Кликните здесь для просмотра всего текста
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
public class AddActivity extends AppCompatActivity implements View.OnClickListener{
    private EditText editNameitem;
    private Uri mUri; // ури камеры
 
    public String name;
    public String Text_ING;
    public String Text_Progress;
 
    int IdChk = 0;
    static final int CAMERA_CAPTURE = 1;
    static final int REQUEST_IMAGE_PICK = 2;
    static final int TEXT_INGREDIENTS = 3;
    static final int TEXT_PROGRESS = 4;
 
    int contextMenuNumber=0;
    //MainActivity mainID = new MainActivity();
    MainActivity mainID;
    ArrayList<ImageView> mImageViews = new ArrayList<>();
 
    DBHelper dbHelper;
    BoxAdapter boxAdapter;
 
    private static final String TAG = "myLogs";
 
 
 
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_add);
        setTitle("...");
 
        editNameitem = (EditText)findViewById(R.id.editNameitem);
        Button btnresourses = (Button) findViewById(button_res);
        Button btnprogress = (Button) findViewById(button_progres);
        Button btnok = (Button) findViewById(R.id.button_ok);
        Button btncancel_back = (Button) findViewById(R.id.button_cancel);
        Button btnnewcam = (Button) findViewById(button_cam);
 
        ImageView img1 = (ImageView)findViewById(R.id.imageView2);
        img1.setOnClickListener(this);
        registerForContextMenu(img1);
        ImageView img2 = (ImageView)findViewById(R.id.imageView3);
        img2.setOnClickListener(this);
        registerForContextMenu(img2);
        ImageView img3 = (ImageView)findViewById(R.id.imageView4);
        img3.setOnClickListener(this);
        registerForContextMenu(img3);
        ImageView img4 = (ImageView)findViewById(R.id.imageView5);
        img4.setOnClickListener(this);
        registerForContextMenu(img4);
        ImageView img5 = (ImageView)findViewById(R.id.imageView6);
        img5.setOnClickListener(this);
        registerForContextMenu(img5);
        ImageView img6 = (ImageView)findViewById(R.id.imageView7);
        img6.setOnClickListener(this);
        registerForContextMenu(img6);
 
        mImageViews.ensureCapacity(5);
 
        mImageViews.add(img1);
        mImageViews.add(img2);
        mImageViews.add(img3);
        mImageViews.add(img4);
        mImageViews.add(img5);
        mImageViews.add(img6);
        mImageViews.trimToSize();
 
        Log.d(TAG, "Заселение массива ImageView===OK");
 
        btnresourses.setOnClickListener(this);
        btnprogress.setOnClickListener(this);
        btnok.setOnClickListener(this);
        btncancel_back.setOnClickListener(this);
        btnnewcam.setOnClickListener(this);
 
        dbHelper = new DBHelper(this);
 
 
    }
 
    public AddActivity(){
        mainID = new MainActivity();
        mainID.getGroupID();
 
    }
 
  
    private void loadID(){
        mainID.sPref = getPreferences(MODE_PRIVATE);
        long groupInBase = mainID.sPref.getLong(mainID.SAVE,mainID.getGroupID());
        String m = String.valueOf(groupInBase);
        Log.d(TAG,m); // вод сдесь нужно вывести тэг!!!!
    }
 
    @Override
    public void onClick(View v) {
//        ContentValues mContentValues = new ContentValues();// создаем объект для данных
//        SQLiteDatabase db = dbHelper.getWritableDatabase(); // подключение к базе данных
 
    switch (v.getId()) {
        
        case R.id.button_ok:
           loadID();
            finish();
            break;
        case R.id.button_cancel:
            finish();
            break;
       
        }
    }
 
 
 
    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.d(TAG, "onDestroy()==OK");
    }
 
  
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.04.2017, 20:19
Ответы с готовыми решениями:

Передача значения параметра из одного класса в другой при разных хедерах
Всем здравствуйте! Застопорился над одним вопросом... Был бы очень благодарен за помощь! Суть: Нужно передать значение параметра из...

Передача значения переменной из метода одного класса в метод другого класса
Добрый вечер! Есть основная форма Form1 в которой есть метод private void button1_Click(object sender, EventArgs e) обрабатывающий...

Передача информации из одного класса в другой
У меня есть класс KeyCreator, там генерируется public string GetSerialNum(),public string CreateInstallationKey() и public string...

7
114 / 120 / 26
Регистрация: 29.01.2014
Сообщений: 609
09.04.2017, 12:24
Цитата Сообщение от dima40420 Посмотреть сообщение
public AddActivity(){
mainID = new MainActivity();
mainID.getGroupID();
}
Серьезно??!!!

Добавлено через 4 минуты
Вы создаете активити, которая в своем констракторе создает мейн активити? 1) с чего вы взяли что метод аддАктивити вызывается? 2) даже если он вызывается, теоретически, с чего вы взяли что new MainActivity(); несет в себе что то?
Жесть короче

Добавлено через 1 минуту
а. еще . зачем шэрд преференс? можно через интент передать и все дела
0
145 / 134 / 22
Регистрация: 28.06.2015
Сообщений: 674
09.04.2017, 13:25
Java
1
public AddActivity(){ mainID = new MainActivity(); mainID.getGroupID();
Вы не можете явно создавать Активности. Активность != Класс. Передавать значения можно через интент, статик поля,
ну и через шаред перфференс.
0
114 / 120 / 26
Регистрация: 29.01.2014
Сообщений: 609
09.04.2017, 13:31
Цитата Сообщение от Vladimir93 Посмотреть сообщение
статик поля
- ни в коем случае
Цитата Сообщение от Vladimir93 Посмотреть сообщение
шаред перфференс
- не в этом случае
0
0 / 0 / 0
Регистрация: 09.03.2017
Сообщений: 22
09.04.2017, 18:22  [ТС]
а можно ли разве передать данные через интент если я не собираюсь вызывать это активити?
0
114 / 120 / 26
Регистрация: 29.01.2014
Сообщений: 609
09.04.2017, 18:28
судя по всему вам нужен фрагмент а не активити.

Добавлено через 2 минуты
Цитата Сообщение от dima40420 Посмотреть сообщение
groupList.setOnItemClickListener(new OnItemClickListener() {
* * * * * * @Override
* * * * * * public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
* * * * * * * * setGroupID(boxAdapter.getItemId(position ));//ПРИСВАИВАЮ ID ПЕРЕМЕННОЙ
* * * * * * * * Log.d(TAG, "itemClick: position = " +
* * * * * * * * * * * * position + ", id = " + id + ", " + parent.getAdapter().getItem(position));
* * * * * * * * saveID();// СОХРАНЯЮ В ПРЕФ
* * * * * * * *Intent intent = new Intent(MainActivity.this, Activity_GroupSelected.class );
* * * * * * * * startActivity(intent)
это что? это открытие активити по нажатию. так как вы не собираетесь ее открывать? или я чего то не понимаю в вашем дизайне?
0
0 / 0 / 0
Регистрация: 09.03.2017
Сообщений: 22
09.04.2017, 18:52  [ТС]
в этом фрагменте я вызываю совсем другое активити, а в addactivity мне нужно передать id выбранного элемента из списка в мейн активити,

схема

MainActivity(тут находится список с элементами ->ActivityGroupSelected(это активити запустится независимо от того какой элемент я выбрал в предыдущем списке, затем создаст свой список и будет населять его соответсвующими значениями из бд ) ->AddActivity(а в этом активити я создаю поле для бд и мне нужно получить id нажатия из mainActivity, для того что бы группировать эти поля )
0
0 / 0 / 0
Регистрация: 09.03.2017
Сообщений: 22
10.04.2017, 19:12  [ТС]
короче не стал заморачиваться, и передал последовательно через интент , из активити в акивити
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.04.2017, 19:12
Помогаю со студенческими работами здесь

Передача данных из одного класса в другой
Подскажите что подправить. Как правильно передать переменные? :wall: public class Salary { public int salary1(){ int...

Передача данных из одного класса в другой
Доброе время суток форумчане =) Пишу класс для общения с php: отправки и получения данных. Но появилась проблема: не очень...

Передача массива из одного класса в другой
Имеется класс Open.cs в нём есть метод public void OpExcel(string file, Form1 form, IEnumerable sumStrArrayPol) { ...

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

Передача коллекции из одного класса в другой
Добрый день, столкнулся с проблемой... Как реализовать передачу данных коллекции через вспомогательный класс public static...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru