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

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

08.04.2017, 20:19. Показов 843. Ответов 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
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.04.2017, 20:19
Ответы с готовыми решениями:

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

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

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

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

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

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

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

Добавлено через 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  [ТС] 7
в этом фрагменте я вызываю совсем другое активити, а в addactivity мне нужно передать id выбранного элемента из списка в мейн активити,

схема

MainActivity(тут находится список с элементами ->ActivityGroupSelected(это активити запустится независимо от того какой элемент я выбрал в предыдущем списке, затем создаст свой список и будет населять его соответсвующими значениями из бд ) ->AddActivity(а в этом активити я создаю поле для бд и мне нужно получить id нажатия из mainActivity, для того что бы группировать эти поля )
0
0 / 0 / 0
Регистрация: 09.03.2017
Сообщений: 22
10.04.2017, 19:12  [ТС] 8
короче не стал заморачиваться, и передал последовательно через интент , из активити в акивити
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.04.2017, 19:12

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

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

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

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


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

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

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