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

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

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

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

24.03.2014, 12:07. Просмотров 1526. Ответов 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):

Получение String из другого класса в Activity widget - Программирование Android
Хей, гайз! Проблема такова: как передавать String между классами я и так знаю, но в виджет классе AS не дает мне этого сделать) ...

Как изменить Textview из другого класса (класса адаптера RecyclerView) - Программирование Android
У меня есть список RecyclerView тоесть этот файл Basket и файл что реализует cardwiew BasketAdapter. как мне изменить TextView allPrice из...

Получение доступа к телефону другого компьютера - Программирование Android
Есть желание разработать мобильное приложение, есть Windows Phone 8.1. Насколько мне известно, разработка под 8.1. с некоторых пор...

Функция activity из другого класса - Программирование Android
Есть главная activity и создаю класс для отрисовки графики: Activity: public class General extends Activity { @Override ...

Замена фрагмента из другого класса - Программирование Android
Здравствуйте, такой вопрос появился у меня... значит есть класс main в котором реализовано переход по фрагментам и отрисовка фрагмента...

Обращение к методу другого класса - Программирование Android
Привет Не пинайте за возможный бред, я учусь) В общем мне необходимо вызвать метод класса Auth из другого класса. Сам метод ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
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
396 / 357 / 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
Сообщений: 510
24.03.2014, 21:13 #6
А еще можно класс посредник..
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.03.2014, 21:13
Привет! Вот еще темы с ответами:

Вызов метода из другого класса - Программирование Android
Не могу разобраться, почему вылетает приложение, когда пытаюсь задать текст для TextView в MainActivity из другого класса. Подскажите...

Импорт класса из другого проекта - Программирование Android
Подскажите, пожалуйста, каким образом я могу импортировать класс Java, который был объявлен в другом проекте (среда - Eclipse) ? ...

Доступ к элементам Activity из другого класса - Программирование Android
Есть Activity, в её классе создаю экземпляр другого класса twoclass tw = new twoclass(); tw.start(MainActivity.this); и запускаю ...

Как запустить метод из другого класса? - Программирование Android
есть класс: public class Class1 extends DialogFragment implements OnClickListener { TextView textViewMessage; String name;...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
24.03.2014, 21:13
Ответ Создать тему
Опции темы

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