Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.73
Eserchik
0 / 0 / 0
Регистрация: 04.06.2012
Сообщений: 21
#1

Получение данных из другого класса - Android

24.03.2014, 12:07. Просмотров 1458. Ответов 5
Метки нет (Все метки)

Подскажите как решить проблему.

У меня есть два класса разнесенных по разным файлам:
ListFragment и DialogFragment.

Cуть проблемы в следующем:
В ListFragment отображается список и есть view элемент, по нажатию на который, отображается диалог содержащий GridView, по нажатию на элемент которого, содержимое этого элемента нужно вернуть в ListFragment.
Я в упор не понимаю как можно вернуть,результат нажатия на GridView элемент в родительский класс и можно ли это вообще сделать.

Вот мой код:

ListFragment:

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
public class LearningWordsFragment extends ListFragment {
    Cursor c;
    
    
      @Override
      public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        LayoutInflater lInflater = (LayoutInflater) getActivity().getBaseContext()
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    
 
      }
      
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        final View v = inflater.inflate(R.layout.fragment_learning_words, container, false);
 
            DB db = new DB(getActivity().getBaseContext());
        db.open();
        
        c = db.getWords();
 
 
        if(c!=null){
            String[] from = new String[] {DB.COLUMN_WORD};
            int[] to = new int[] {R.id.tvWord};
            CustomAdapterWords adapter = new CustomAdapterWords(getActivity(), R.layout.row_list_view_word, c, from, to, v);
            setListAdapter(adapter);
 
          
          }else{
              c.close();
          }
        
 
                LinearLayout llChooseLetter = (LinearLayout)v.findViewById(R.id.llChooseLetter);
        llChooseLetter.setOnClickListener(new View.OnClickListener(){
 
            @Override
            public void onClick(View v) {
                //Запускаем диалог:
                 DialogChooseLetter dialog=new DialogChooseLetter();
                                 dialog.show(getFragmentManager(), "dialog");
            }
            
        });
        
 
        
        return v;
    }
    
    
    
    
}


DialogFragment:


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
public class DialogChooseLetter extends DialogFragment implements OnClickListener {
      String[] data = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"};
      final String LOG_TAG = "myLogs";
 
      public View onCreateView(LayoutInflater inflater, ViewGroup container,
          Bundle savedInstanceState) {
        getDialog().setTitle("Выберите букву");
        View v = inflater.inflate(R.layout.dialog, null);
 
        
        GridView gridView = (GridView)v.findViewById(R.id.gvChooseLetter);
        ArrayAdapter<String> adapter = new ArrayAdapter(getActivity().getBaseContext(), R.layout.grid_item, R.id.tvText, data);
        gridView.setAdapter(adapter);
 
 
 
 
               //Обработка нажатия на GridView элемент
        gridView.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View v,
                int position, long id) {
                 
                                    //Как вернуть эту переменную в ListFragment?
                                   String returnData=data[position].toLowerCase();
                   Toast.makeText(getActivity(),returnData, Toast.LENGTH_SHORT).show();
                   getDialog().dismiss();
                
 
                
                
            }
 
 
        });
        
        return v;
      }
      
 
 
      public void onClick(View v) {
        Log.d(LOG_TAG, "Dialog 1: " + ((Button) v).getText());
        dismiss();
      }
 
      public void onDismiss(DialogInterface dialog) {
        super.onDismiss(dialog);
        Log.d(LOG_TAG, "Dialog 1: onDismiss");
      }
 
      public void onCancel(DialogInterface dialog) {
        super.onCancel(dialog);
        Log.d(LOG_TAG, "Dialog 1: onCancel");
      }
    }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.03.2014, 12:07     Получение данных из другого класса
Посмотрите здесь:

Android Обращение к элементам активити из другого класса
Как запустить метод из другого класса? Android
Android Получить значение non-static переменной из другого класса
Android Обращение к методу другого класса
Импорт класса из другого проекта Android
Android Как выполнить setContentView из другого класса?
Получить доступ к EditText из другого класса Android
Замена фрагмента из другого класса Android
Вызов нестатического метода из другого класса Android
Доступ к элементам Activity из другого класса Android
Функция activity из другого класса Android
Получение String из другого класса в Activity widget Android

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dmitre
10 / 10 / 3
Регистрация: 02.11.2013
Сообщений: 53
24.03.2014, 13:05     Получение данных из другого класса #2
В лоб приходит решение: объявить String returnData как переменную класса DialogFragment.
Затем добавить в DialogFragment геттер:
Java
1
2
3
public String getReturnData(){
    return returnData;
}
и в классе ListFragment в этом куске обработчика
Java
1
2
3
4
5
6
@Override
public void onClick(View v) {
    //Запускаем диалог:
    DialogChooseLetter dialog=new DialogChooseLetter();
    dialog.show(getFragmentManager(), "dialog");
}
добавить, например, вот такой код
Java
1
String d=dialog.getReturnData()
Вот только не уверен, уничтожится ли диалог сразу после закрытия или по завершению функции onClick()...
verylazy
Заблокирован
24.03.2014, 13:07     Получение данных из другого класса #3
завести в активити глобальную (для него) переменную и писать туда что необходимо из диалога, не?
Tester64
395 / 356 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
24.03.2014, 15:57     Получение данных из другого класса #4
завести отдельный класс - хранилище глобальных переменных. Проще статик финал.
Java
1
2
3
4
public final class Const {
    final static String global_parm1 = "";
}
Const.global_parm1 = "Hello!";
NiRamz
211 / 211 / 16
Регистрация: 26.12.2010
Сообщений: 691
24.03.2014, 19:41     Получение данных из другого класса #5
какие статики? добавить интерфейс, который передавать во второй фрагмент при создании и по нажатию на нужный элемент кидать в него значения, а во втором фрагменте обрабатывать.
korsaj
148 / 117 / 9
Регистрация: 16.08.2013
Сообщений: 508
24.03.2014, 21:13     Получение данных из другого класса #6
А еще можно класс посредник..
Yandex
Объявления
24.03.2014, 21:13     Получение данных из другого класса
Ответ Создать тему
Опции темы

Текущее время: 03:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru