Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
dima40420
0 / 0 / 0
Регистрация: 09.03.2017
Сообщений: 22
1

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

08.04.2017, 20:19. Просмотров 461. Ответов 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
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.04.2017, 20:19
Ответы с готовыми решениями:

Ошибка передачи данных из одного класса в другой
В приложении в первом окне пользователь вводит логин (email) и пароль. Я почту пытаюсь передать в...

Как передать параметры из одного класса в другой?
Есть класс Phase, в нем метод: public static double phase(double pdate, RefDouble pphaseR,...

Передача значения переменной Activity в другой класс
Есть активность: public class Menu extends Activity { OnClickListener lt; EditText Day,...

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

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

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

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

Добавлено через 1 минуту
а. еще . зачем шэрд преференс? можно через интент передать и все дела
0
Vladimir93
74 / 75 / 12
Регистрация: 28.06.2015
Сообщений: 308
09.04.2017, 13:25 3
Java
1
public AddActivity(){ mainID = new MainActivity(); mainID.getGroupID();
Вы не можете явно создавать Активности. Активность != Класс. Передавать значения можно через интент, статик поля,
ну и через шаред перфференс.
0
shavuz
114 / 120 / 26
Регистрация: 29.01.2014
Сообщений: 606
09.04.2017, 13:31 4
Цитата Сообщение от Vladimir93 Посмотреть сообщение
статик поля
- ни в коем случае
Цитата Сообщение от Vladimir93 Посмотреть сообщение
шаред перфференс
- не в этом случае
0
09.04.2017, 13:31
dima40420
0 / 0 / 0
Регистрация: 09.03.2017
Сообщений: 22
09.04.2017, 18:22  [ТС] 5
а можно ли разве передать данные через интент если я не собираюсь вызывать это активити?
0
shavuz
114 / 120 / 26
Регистрация: 29.01.2014
Сообщений: 606
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
dima40420
0 / 0 / 0
Регистрация: 09.03.2017
Сообщений: 22
09.04.2017, 18:52  [ТС] 7
в этом фрагменте я вызываю совсем другое активити, а в addactivity мне нужно передать id выбранного элемента из списка в мейн активити,

схема

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

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

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

Передача массива из одного класса в другой
Есть 2 файла классов и в одном объявляется массив n элементов. Как его передать во второй класс?...


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

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

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