Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
yura91
1 / 25 / 2
Регистрация: 23.10.2013
Сообщений: 2,310
#1

OnDrag не вызывается во фрагменте - Программирование Android

30.11.2016, 12:56. Просмотров 158. Ответов 0
Метки нет (Все метки)

Я реализовую drag and drop во фрагменте но метод onDrag почему то не выцзывается
Вот сам фрагмент
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
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
public class PhotosFragment extends Fragment implements View.OnDragListener, OnStartDragListener {
    @Bind(R.id.photoList)
    RecyclerView photoList;
    LinearLayoutManager mLayoutManager;
    @Bind(R.id.emptyLayout)
    RelativeLayout emptyMessage;
    private ItemTouchHelper mItemTouchHelper;
    private PhotosAdapter adapter;
    private Api api;
    int tabFragmentType;
    int fragmentNumber;
    private static boolean loading = true;
    int pastVisiblesItems, visibleItemCount, totalItemCount;
    private CompositeSubscription compositeSubscription = new CompositeSubscription();
 
    MyDreamer dreamer;
    boolean fromDreambook=false;
    List<MyGaleryPhoto> photo;
    private final EventBus eventBus = EventBus.getDefault();
 
    public static PhotosFragment newInstance(int tabFragmentType, List<MyGaleryPhoto> photo) {
        PhotosFragment tapeFragment = new PhotosFragment();
        tapeFragment.photo=photo;
        tapeFragment.tabFragmentType =tabFragmentType;
        return tapeFragment;
    }
 
 
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.photo_fragment, container, false);
        ButterKnife.bind(this, view);
        setHasOptionsMenu(true);
        ((AppCompatActivity)getActivity()).getSupportActionBar().setTitle(R.string.photos);
        /*View logo = getActivity().getLayoutInflater().inflate(R.layout.toolbar_photo, null);
        toolbar.addView(logo);*/
        /*View logo = getActivity().getLayoutInflater().inflate(R.layout.toolbar_photo, null);
        ((Toolbar)this.getActivity().findViewById(R.id.toolbar)).addView(logo);*/
        //((Toolbar)this.getActivity().findViewById(R.id.toolbar)).setTitle(R.string.photos);
        mLayoutManager = new GridLayoutManager(getActivity(), 2);
 
 
        photoList.setLayoutManager(mLayoutManager);
        photoList.setAdapter(adapter);
 
        adapter.update(photo);
        setRecyclerViewListener();
        ItemTouchHelper.Callback callback = new SimpleItemTouchHelperCallback(adapter);
        mItemTouchHelper = new ItemTouchHelper(callback);
        mItemTouchHelper.attachToRecyclerView(photoList);
        photoList.addOnItemTouchListener(new RecyclerItemClickListener(getActivity(), photoList, new RecyclerItemClickListener.OnItemClickListener() {
 
            @Override
            public void onItemClick(View view, int position) {
 
            }
 
            @Override
            public void onLongItemClick(View view, int position) {
                /*Display display = getActivity().getWindowManager().getDefaultDisplay();
                int SCREEN_HEIGHT = display.getHeight();
                RelativeLayout layout1 = (RelativeLayout) getActivity().findViewById(R.id.tab_fragment_first);
                LinearLayout layout = (LinearLayout) getActivity().findViewById(R.id.linearLayout);
                RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams)layout.getLayoutParams();
                int MARGIN = SCREEN_HEIGHT - layout.getHeight();
                //layout.setAdjustViewBounds(true);
                //params.setMargins(0, 900, 0, 0);
                //layout.setLayoutParams(params);
                layout.setVisibility(View.VISIBLE);*/
               // linearutton.setVisibility(View.VISIBLE);
                /*Animation bottomUp = AnimationUtils.loadAnimation(getContext(),
                        R.anim.bottom_up);
                ViewGroup hiddenPanel = (ViewGroup)getActivity().findViewById(R.id.linearLayout);
                hiddenPanel.startAnimation(bottomUp);
                hiddenPanel.setVisibility(View.VISIBLE);*/
 
                getActivity().findViewById(R.id.trash_can).setVisibility(View.VISIBLE);
 
            }
        }));
 
        return view;
    }
 
    public static boolean getLoading()
    {
        return loading;
    }
 
    public static void setLoading(boolean value)
    {
        loading = value;
    }
 
    private void setRecyclerViewListener() {
 
        photoList.addOnScrollListener(new RecyclerView.OnScrollListener() {
            @Override
            public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
                if (dy > 0) //check for scroll down
                {
                    visibleItemCount = mLayoutManager.getChildCount();
                    totalItemCount = mLayoutManager.getItemCount();
                    pastVisiblesItems = mLayoutManager.findFirstVisibleItemPosition();
 
                    if (loading) {
                        if ((visibleItemCount + pastVisiblesItems) >= totalItemCount) {
                            loading = false;
                            Log.v("...", "Last Item Wow !");
 
 
                            eventBus.post(adapter);
                        }
                    }
                }
            }
        });
    }
 
    @Override
    public void onStart() {
        super.onStart();
 
        int count = adapter.getItemCount();
        if(count == 0) {
            emptyMessage.setVisibility(View.VISIBLE);
        }
 
    }
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        adapter = new PhotosAdapter(getActivity());
    }
 
 
    @Override
    public void onDetach() {
        super.onDetach();
 
    }
 
    @Override
    public void onDestroy() {
        compositeSubscription.unsubscribe();
        super.onDestroy();
    }
 
 
    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
    }
 
    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
 
    }
 
    public  float convertPixelsToDp(int px){
        Resources resources = getActivity().getResources();
        DisplayMetrics metrics = resources.getDisplayMetrics();
        float dp = px / ((float)metrics.densityDpi / DisplayMetrics.DENSITY_DEFAULT);
        return dp;
    }
 
    public static int getDeviceWidth(Context context){
        WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
        Display display = wm.getDefaultDisplay();
        int width=display.getWidth();
        return width;
    }
 
    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
 
        menu.clear();
 
                inflater.inflate(R.menu.toolbar_photo, menu);
                super.onCreateOptionsMenu(menu, inflater);
 
    }
 
    @Override
    public boolean onDrag(View v, DragEvent event) {  // не вызывается
 
        switch (event.getAction()) {
            case DragEvent.ACTION_DRAG_STARTED:
                // Drag has started
                // If called for trash resize the view and return true
                if (v.getId() == R.id.trash_can) {
                    v.animate().scaleX(1.0f);
                    v.animate().scaleY(1.0f);
                    return true;
                } else // else check the mime type and set the view visibility
                    if (event.getClipDescription().hasMimeType(ClipDescription.MIMETYPE_TEXT_PLAIN)) {
                        v.setVisibility(View.GONE);
                        return true;
 
                    } else {
                        return false;
                    }
            case DragEvent.ACTION_DRAG_ENTERED:
                // Drag has entered view bounds
                // If called for trash can then scale it.
                if (v.getId() == R.id.trash_can) {
                    v.animate().scaleX(1.5f);
                    v.animate().scaleY(1.5f);
                }
                return true;
            case DragEvent.ACTION_DRAG_EXITED:
                // Drag exited view bounds
                // If called for trash can then reset it.
                if (v.getId() == R.id.trash_can) {
                    v.animate().scaleX(1.0f);
                    v.animate().scaleY(1.0f);
                }
                v.invalidate();
                return true;
            case DragEvent.ACTION_DRAG_LOCATION:
                // Ignore this event
                return true;
            case DragEvent.ACTION_DROP:
                // Dropped inside view bounds
                // If called for trash can then delete the item and reload the grid
                // view
                if (v.getId() == R.id.trash_can) {
                   // RecyclerListAdapter.mItems.remove(draggedIndex);
                    //draggedIndex = -1;
                }
                adapter.notifyDataSetChanged();
            case DragEvent.ACTION_DRAG_ENDED:
                // Hide the trash can
                /*new Handler().postDelayed(new Runnable() {
 
                    @Override
                    public void run() {
                        findViewById(R.id.trash_can).setVisibility(View.GONE);
                    }
                }, 100l);
                if (view.getId() == R.id.trash_can) {
                    view.animate().scaleX(1.0f);
                    view.animate().scaleY(1.0f);
                } else {
                    view.setVisibility(View.VISIBLE);
                }
                // remove drag listeners
                view.setOnDragListener(null);
                return true;*/
        }
        return false;
    }
 
    @Override
    public void onStartDrag(RecyclerView.ViewHolder viewHolder) { // не вызывается
        mItemTouchHelper.startDrag(viewHolder);
    }
}
Почему это происходит? Как решить проблему?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.11.2016, 12:56
Здравствуйте! Я подобрал для вас темы с ответами на вопрос OnDrag не вызывается во фрагменте (Программирование Android):

Вывод во втором фрагменте длины текста, введённого в первом фрагменте активити - Программирование Android
Создать активити с двумя фрагментами. В первый фрагмент должен содержать поле ввода, второй текстовое поле. Выводить во втором фрагменте...

onDrag - Программирование Android
вообщем надо отреагировать на провод пальцем по виджету package com.example.pr; public class pictureView extends ImageView { ...

Фрагмент во фрагменте - Программирование Android
Добрый день. А возможно ли создание фрагмента состоящего из нескольких фрагментов?

Webview на фрагменте - Программирование Android
Всем привет! Есть проблемка, может кто сталкивался... Есть фрагмент с webview. Меняю размер шрифта в webview, и меняется только размер на...

Потоки в фрагменте не запустить? - Программирование Android
Не могу использовать потоки в фрагменте. использую конструкцию: new Thread() { @Override public void run() { ...code ...

Остановить выполнение во фрагменте - Программирование Android
Есть для примера код который расположен в фрагменте. как остановить программу // Если номер введен неверно ...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.11.2016, 12:56
Привет! Вот еще темы с ответами:

Отображение ListView во фрагменте - Программирование Android
Привет, всем! Буду очень признательна, если кто-нибудь сможет мне помочь разобраться. Я пишу программку для расписания занятий моего...

MenuItemSelected не работает в фрагменте - Программирование Android
Метод return super.onMenuItemSelected(featureId, item); никак не хочет работать в фрагменте, почему? До работы приложения остаётся только...

Обработка физической кнопки в фрагменте - Программирование Android
День добрый! Столкнулся с такой проблемой. Есть фрагмент: package com.example.navigationsample; import java.io.IOException; ...

Обработать событие onBackPressed во фрагменте - Программирование Android
У меня есть фрагмент который запускается через транзакцию и как можно обработать в нем нажатие кнопки back и выполнить определенные...


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

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

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