0 / 0 / 0
Регистрация: 09.03.2017
Сообщений: 22

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

08.04.2017, 20:19. Показов 1603. Ответов 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru