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

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

08.04.2017, 20:19. Просмотров 286. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
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,...

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

Перейти с одного дисплея на другой
Здравствуйте! У меня возникла проблема при переходе с одного дисплея на следующий с помощью кнопки....

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

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

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

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

Не получается добавить элементы одного ArrayList в другой
for (i=1;i&lt;=5;i++){ Que.add(arrayList.get(i)); } ...

Как реализовать передачу массива из одного фрагмента в другой
Здравствуйте, как реализовать передачу массива из одного фрагмента в другой?


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

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

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