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

DialogFragment. Ошибка при потдверждении удалении контакта. Метод должен быть статическим

28.12.2017, 18:20. Просмотров 131. Ответов 0
Метки нет (Все метки)

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
package com.example.dashutka.myapplication;
 
import android.support.v4.app.Fragment;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.support.v4.app.Fragment;
import android.support.v4.app.LoaderManager;
import android.support.v4.content.CursorLoader;
import android.support.v4.content.Loader;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.example.dashutka.myapplication.data.DatabaseDescription.Contact;
/**
 * Created by Dashutka on 27.12.2017.
 */
 
public class DetailFragment extends Fragment
       implements LoaderManager.LoaderCallbacks<Cursor>
 
    {
        // Методы обратного вызова, реализованные MainActivity
        public interface DetailFragmentListener {
            void onContactDeleted(); // Вызывается при удалении контакта
 
            // Передает URI редактируемого контакта DetailFragmentListener
            void onEditContact(Uri contactUri);
        }
 
        private static final int CONTACT_LOADER = 0; // Идентифицирует Loader
 
        private DetailFragmentListener listener; // MainActivity
        private Uri contactUri; // Uri выбранного контакта
 
        private TextView nameTextView; // Имя контакта
        private TextView mestoTextView; // Телефон
        private TextView temaTextView; // Электронная почта
        private TextView dataTextView; // Улица
        private TextView moziaTextView; // Город
        private TextView textTextView; // Штат
 
        // Назначение DetailFragmentListener при присоединении фрагмента
        @Override
        public void onAttach (Context context){
        super.onAttach(context);
        listener = (DetailFragmentListener) context;
    }
 
        // Удаление DetailFragmentListener при отсоединении фрагмента
        @Override
        public void onDetach () {
        super.onDetach();
        listener = null;
    }
 
        // Вызывается при создании представлений фрагмента
        @Override
        public View onCreateView (
            LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState){
        super.onCreateView(inflater, container, savedInstanceState);
        setHasOptionsMenu(true); // У фрагмента есть команды меню
 
        // Получение объекта Bundle с аргументами и извлечение URI
        Bundle arguments = getArguments();
 
        if (arguments != null)
            contactUri = arguments.getParcelable(MainActivity.CONTACT_URI);
 
        // Заполнение макета DetailFragment
        View view =
                inflater.inflate(R.layout.fragment_details, container, false);
 
        // Получение компонентов EditTexts
        nameTextView = (TextView) view.findViewById(R.id.nameTextView);
        mestoTextView = (TextView) view.findViewById(R.id.mestolTextView);
        temaTextView = (TextView) view.findViewById(R.id.temaTextView);
        dataTextView = (TextView) view.findViewById(R.id.dataTextView);
        moziaTextView = (TextView) view.findViewById(R.id.moziaTextView);
        textTextView = (TextView) view.findViewById(R.id.textTextView);
 
 
        // Загрузка контакта
        getLoaderManager().initLoader(CONTACT_LOADER, null, this);
        return view;
    }
 
        // Отображение команд меню фрагмента
        @Override
        public void onCreateOptionsMenu (Menu menu, MenuInflater inflater){
        super.onCreateOptionsMenu(menu, inflater);
        inflater.inflate(R.menu.fragment_details_menu, menu);
    }
 
        // Обработка выбора команд меню
        @Override
        public boolean onOptionsItemSelected (MenuItem item){
        switch (item.getItemId()) {
            case R.id.action_edit:
                listener.onEditContact(contactUri); // Передача Uri слушателю
                return true;
            case R.id.action_delete:
                deleteContact();
                return true;
        }
 
        return super.onOptionsItemSelected(item);
    }
 
        // Удаление контакта
 
 
        private void deleteContact() {
            // FragmentManager используется для отображения confirmDelete
            confirmDelete.show(getFragmentManager(), "confirm delete");
        }
 
 
 
 
        // DialogFragment для подтверждения удаления контакта
        private  final  DialogFragment confirmDelete =
                new DialogFragment() {
                    // Создание объекта AlertDialog и его возвращение
                    @Override
                    public    Dialog onCreateDialog(Bundle bundle) {
                        // Создание объекта AlertDialog.Builder
                        AlertDialog.Builder builder =
                                new AlertDialog.Builder(getActivity());
 
                        builder.setTitle(R.string.confirm_title);
                        builder.setMessage(R.string.confirm_message);
 
                        // Кнопка OK просто закрывает диалоговое окно
                        builder.setPositiveButton(R.string.button_delete,
                                new DialogInterface.OnClickListener() {
                                    @Override
                                    public void onClick(
                                            DialogInterface dialog, int button) {
 
                                        // объект ContentResolver используется
                                        // для вызова delete в AddressBookContentProvider
                                        getActivity().getContentResolver().delete(
                                                contactUri, null, null);
                                        listener.onContactDeleted(); // Оповещение слушателя
                                    }
                                }
                        );
 
                        builder.setNegativeButton(R.string.button_cancel, null);
                        return builder.create(); // Вернуть AlertDialog
                    }
                };
 
 
 
        // Вызывается LoaderManager для создания Loader
    @Override
    public Loader<Cursor> onCreateLoader(int id, Bundle args) {
        // Создание CursorLoader на основании аргумента id; в этом
        // фрагменте только один объект Loader, и команда switch не нужна
        CursorLoader cursorLoader;
 
        switch (id) {
            case CONTACT_LOADER:
                cursorLoader = new CursorLoader(getActivity(),
                        contactUri, // Uri отображаемого контакта
                        null, // Все столбцы
                        null, // Все записи
                        null, // Без аргументов
                        null); // Порядок сортировки
                break;
            default:
                cursorLoader = null;
                break;
        }
 
        return cursorLoader;
    }
 
    // Вызывается LoaderManager при завершении загрузки
    @Override
    public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
        // Если контакт существует в базе данных, вывести его информацию
        if (data != null && data.moveToFirst()) {
            // Получение индекса столбца для каждого элемента данных
            int nameIndex = data.getColumnIndex(Contact.COLUMN_NAME);
            int phoneIndex = data.getColumnIndex(Contact.COLUMN_MESTO);
            int emailIndex = data.getColumnIndex(Contact.COLUMN_TEMA);
            int streetIndex = data.getColumnIndex(Contact.COLUMN_DATA);
            int cityIndex = data.getColumnIndex(Contact.COLUMN_MOZIA);
            int stateIndex = data.getColumnIndex(Contact.COLUMN_TEXT);
 
 
            // Заполнение TextView полученными данными
            nameTextView.setText(data.getString(nameIndex));
            mestoTextView.setText(data.getString(phoneIndex));
            temaTextView.setText(data.getString(emailIndex));
            dataTextView.setText(data.getString(streetIndex));
            moziaTextView.setText(data.getString(cityIndex));
            textTextView.setText(data.getString(stateIndex));
        }
    }
 
    // Вызывается LoaderManager при сбросе Loader
    @Override
    public void onLoaderReset(Loader<Cursor> loader) {
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.12.2017, 18:20
Ответы с готовыми решениями:

Ошибка приложения при удалении Title
Добрый день. Создал примитивное, но зато работающее приложение (Android Studio)...

В классе Student определите метод InitAr (Метод должен быть статическим)
Здравствуйте. Помогите пожалуйста разобраться в задании: a. В классе Student...

Как определять какой метод должен быть статическим, а какой нет?
Quer::add_line_to_vec: недопустимый вызов нестатической функции-члена

При удалении строки в DGV, курсор должен быть на следующей
Всем привет.Как сделать так, чтобы при удалении строки из datagridview, курсор...

Ошибка:метод расширения должен быть определен в статическом классе
Можете найти ошибку ? метод расширения должен быть определен в статическом...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.12.2017, 18:20

Ошибка при ветвлении: левый операнд должен быть левосторонним значением
if (x1_bi_answer &amp;&amp; x2_bi_answer &amp;&amp; x3_bi_answer &amp;&amp; x4_bi_answer != NULL)...

Ошибка при работе с изображениями: Параметр должен быть положительным и меньше ширины
Вот попробовал написать программку по созданию рамдомного изображения, тоисть...

Метод должен быть обязательно возвращающим
Программа работает корректно.Только с выводом не знаю,как сделать. class...


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

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

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