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

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

Войти
Регистрация
Восстановить пароль
 
талраш
0 / 0 / 0
Регистрация: 26.02.2013
Сообщений: 33
#1

Передать данные из фрагмента в Dialog Fragment - Программирование Android

08.10.2016, 11:03. Просмотров 315. Ответов 3
Метки нет (Все метки)

Всем привет. У меня вопрос: Как в диалогФрагмент передать данные из фрагмента. Нужно передать позицию выбранного элемента gridViev, и в зависимости от выбранного элемента взять данные из ArrayList<DataO>, который заполняется из json, чтобы заполнить диалог.
диалогФрагмент
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
import android.app.DialogFragment;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.TextView;
 
import java.util.ArrayList;
 
 
public class Dialog1 extends DialogFragment implements OnClickListener {
    private TextView sumPrice;
    private OnFragmentInteractionListener mListener;
    public TextView pricemodal;
    public Button btnModal;
    public ImageView orderLogo;
    public TextView description;
    public ArrayList<DataO> dataOrder;
    public static Dialog1 newInstance(int index) {
        Dialog1 fragment = new Dialog1();
        Bundle args = new Bundle();
        args.putInt("index", index);
        fragment.setArguments(args);
        return fragment;
    }
    public int getIndex(){
        return getArguments().getInt("index",0);
    }
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View modal = inflater.inflate(R.layout.modal_fragment, null);
        pricemodal =(TextView)modal.findViewById(R.id.priceModal);
        btnModal=(Button)modal.findViewById(R.id.btnmodal);
        orderLogo=(ImageView)modal.findViewById(R.id.imageModal);
        description=(TextView)modal.findViewById(R.id.descriptionModal);
        modal.findViewById(R.id.btnmodal).setOnClickListener(this);
        return modal;
    }
    public void UpdateDialog(){
        
    }
 
 
 
    public interface OnFragmentInteractionListener {
 
    }
    public void onClick(View v) {
        //sumPrice.setText("1");
        dismiss();
    }
    public void onDismiss(DialogInterface dialog) {
        super.onDismiss(dialog);
 
    }
    public void onCancel(DialogInterface dialog) {
        super.onCancel(dialog);
 
    }
 
}
Фрагмент из которого вызывается диалог.
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
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
import android.app.DialogFragment;
import android.content.Context;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.GridView;
 
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
 
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
 
 
public class OrderFragment extends Fragment {
 
    DialogFragment modal;
    View view;
    DataAdapter OrAdapter;
    GridView gvOrder;
    protected static ArrayList<DataO> OrderData;
    int choiseIndex=0;
 
    private OnFragmentInteractionListener mListener;
 
    public static OrderFragment newInstance() {
        OrderFragment fragment = new OrderFragment();
        Bundle args = new Bundle();
        fragment.setArguments(args);
        return fragment;
    }
 
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
 
    }
    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putInt("curChoice", choiseIndex);
    }
 
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        view = inflater.inflate(R.layout.fragment_order, container, false);
        modal=new Dialog1();
        new DataOInit().execute();
        return view;
    }
    public class DataOInit extends AsyncTask<Void, Void, String> {
 
        HttpURLConnection urlConnection = null;
        BufferedReader reader = null;
        String resultJson = "";
 
        @Override
        protected String doInBackground(Void... params) {
            // получаем данные с внешнего ресурса
            try {
                URL url = new URL(MainActivity.ARTICLE_URL);
 
                urlConnection = (HttpURLConnection) url.openConnection();
                urlConnection.setRequestMethod("GET");
                urlConnection.connect();
 
                InputStream inputStream = urlConnection.getInputStream();
                StringBuffer buffer = new StringBuffer();
 
                reader = new BufferedReader(new InputStreamReader(inputStream));
 
                String line;
                while ((line = reader.readLine()) != null) {
                    buffer.append(line);
                }
 
                resultJson = buffer.toString();
 
            } catch (Exception e) {
                e.printStackTrace();
            }
            return resultJson;
        }
 
        @Override
        protected void onPostExecute(String strJson) {
            super.onPostExecute(strJson);
 
            JSONObject dataJsonObj = null;
            OrderData = new ArrayList<>();
            String name,price,description,picture;
            int id;
 
            try {
                dataJsonObj = new JSONObject(strJson);
                JSONArray events = dataJsonObj.getJSONArray("events");
                for (int i = 0; i < events.length(); i++) {
                    JSONObject partnerItem = events.getJSONObject(i);
 
                    name = partnerItem.getString("name");
                    price = partnerItem.getString("price");
                    id = partnerItem.getInt("id");
                    description = partnerItem.getString("description");
                    picture = partnerItem.getString("picture");
                    OrderData.add(
                            new DataO(
                                    name,
                                    price,
                                    id,
                                    description,
                                    picture
                            )
                    );
 
                    setData();
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    }
 
    private void setData() {
 
        if(OrderData!=null && OrderData.size()>0) {
            try {
                OrAdapter = new DataAdapter(getActivity(), OrderData);
                gvOrder = (GridView) view.findViewById(R.id.gridView);
                gvOrder.setAdapter(OrAdapter);
                gvOrder.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                    @Override
                    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
 
                        /*DataO obj=OrderData.get(position);
                        String Name=obj.getName();
                        String Price=obj.getPrice();
                        String Description=obj.getDescription();
                        String Picture=obj.getPicture();
                        Bundle args = new Bundle();
                        args.putString(Name,Name);
                        args.putString(Price,Price);
                        args.putString(Description,Description);
                        args.putString(Picture,Picture);*/
                        showDialog(position);
                        modal.show(getFragmentManager(), "Dialog1");
 
                    }
                });
            } catch (NullPointerException ne) {
 
            }
        }
    }
    void showDialog(int index){
        choiseIndex=index;
        modal.show(getFragmentManager(), "Dialog1");
    }
 
    public void onButtonPressed(Uri uri) {
        if (mListener != null) {
            mListener.onFragmentInteraction(uri);
        }
    }
 
    @Override
    public void onAttach(Context context) {
        super.onAttach(context);
 
    }
 
    @Override
    public void onDetach() {
        super.onDetach();
        mListener = null;
    }
 
    public interface OnFragmentInteractionListener {
        void onFragmentInteraction(Uri uri);
    }
 
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.10.2016, 11:03     Передать данные из фрагмента в Dialog Fragment
Посмотрите здесь:
Передать данные из fragment в активити Android
Не могу передать контекст фрагмента в addTextChangedListener Android
Android Обновление fragment из другого fragment
Android Повторное создание фрагмента внутри фрагмента ViewPager
Android Передать данные из диалога
Android Передать данные из radiobutton
Передать данные в активити Android
Android Как передать данные в EditText
Как передать данные в thread? Android
Android Передать данные из базы в ListView
Android Как передать intent данные в Service?
Передать данные с сервиса на другой сервис Android

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OlegJV
102 / 102 / 29
Регистрация: 13.03.2016
Сообщений: 471
08.10.2016, 12:26     Передать данные из фрагмента в Dialog Fragment #2
Bundle
талраш
0 / 0 / 0
Регистрация: 26.02.2013
Сообщений: 33
08.10.2016, 12:35  [ТС]     Передать данные из фрагмента в Dialog Fragment #3
а поподробнее
shavuz
99 / 105 / 19
Регистрация: 29.01.2014
Сообщений: 527
11.10.2016, 10:58     Передать данные из фрагмента в Dialog Fragment #4
дата передается чере newinstance
вот тут гугл обьясняет: https://developer.android.com/refere.../Fragment.html
Yandex
Объявления
11.10.2016, 10:58     Передать данные из фрагмента в Dialog Fragment
Ответ Создать тему
Опции темы

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