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

Как переделать Activity в фрагмент? - Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Android Ошибка импорта - требует экспорт проекта из ADT http://www.cyberforum.ru/android-dev/thread1058350.html
Работаю в Андроид Студии. Скачал проект (https://github.com/bitplane/Microphone) с github. Пытаюсь затянуть. Выдает ошибку: The project at 'путь к проекту без пробелов' is an Android ADT project. To import this project into Android Studio yor first need to *export* it as a Gradle project from ADT. (мог опечататься - перенабирал с экрана) Просто открыть тоже не получается.
Android бот для текстовой онлайн игры Обращаюсь к профи хг:-) люди нужен бот для браузерной текстовой онлайн игры, для андроид 4.0.4 для рубки деревьев. Нужна даже не прога а может чуток переделаный браузер, или автокликер с клыканьем по определенным ссылкам:-) вот так:-) мне кажется для люд ей с хорошим опытом ето будет не сложно. Что скаждите? http://www.cyberforum.ru/android-dev/thread1057937.html
Android Исключение при декодировании изображения
После фотографирования пытаюсь получить битмап фотографии методом BitmapFactory.decodeFile(path); Обычно все проходит без ошибок, но иногда вылетает Throwable (t.getMessage() = null) в: android.graphics.BitmapFactory.nativeDecodeStream (Native Method) android.graphics.BitmapFactory.decodeStream (BitmapFactory.java:527) android.graphics.BitmapFactory.decodeFile (BitmapFactory.java:301)...
Android Изменение размера картинок в зависимости от разрешения экрана
Пишу приложение на Java для Android. Столкнулся с проблемой, что при использование шаблона xml для стандартных размеров экрана 480*800 картинки на экране отображаются нормально, но если же запускаю эмулятор планшета с разрешением 800*1200, то они изменяются не пропорционально. Также работаю с Bitmap. Собственно нужна помощь как реализовать изменение размера изображения к примеру для ImageView и...
Android Резервная копия паролей WiFi http://www.cyberforum.ru/android-dev/thread1057849.html
Гуру, подскажите! Возможно ли такое? Нужен для этого рут? В какую сторону копать? В настройках нашел возможность сделать резервную копию паролей wifi на сервер гугла, а хотелось бы... не отправлять их, а сложить на флешку и потом востановить. Не в курсе, что при этом сохраняется? только пароль или все настройки соединения (IP, DNS). Как идет привязка пароля - к имени соединения? Есть ли...
Android longPolling service Добрый день. Опишу проблему. На сервере реализована технология long-polling, для обновления информации, только тогда когда требуется. Необходимо поддержать её на клиентской стороне. Сейчас сделано, используя класс Connection потомок Runnable и запрос на обновление отправляется каждые 5 секунд. Если кто сталкивался, подскажите как сделать лонг-пулинг? Наследовать Connection от... подробнее

Показать сообщение отдельно
mcGurov
 Аватар для mcGurov
3 / 3 / 0
Регистрация: 30.07.2013
Сообщений: 99

Как переделать Activity в фрагмент? - Android

27.12.2013, 10:02. Просмотров 787. Ответов 4
Метки (Все метки)

Есть своё приложение реализованное с помощью фрагментов. Решил добавить в него простейшую напоминалку TaskReminder, стал переделывать Activity в Fragment и столкнулся с рядом проблем, большинство удалось решить, но никак не могу исправить главную активность.

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
261
262
263
264
265
266
267
268
269
270
package planner;
 
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
 
import com.example.navigationsample.R;
 
import android.app.Activity;
 
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.app.TimePickerDialog;
import android.content.SharedPreferences;
import android.database.Cursor;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.TimePicker;
import android.widget.Toast;
 
public class ReminderEditFragment extends Fragment {
 
    // 
    // Dialog Constants
    //
    private static final int DATE_PICKER_DIALOG = 0;
    private static final int TIME_PICKER_DIALOG = 1;
    
    // 
    // Date Format 
    //
    private static final String DATE_FORMAT = "yyyy-MM-dd"; 
    private static final String TIME_FORMAT = "kk:mm";
    public static final String DATE_TIME_FORMAT = "yyyy-MM-dd kk:mm:ss";
    
    private EditText mTitleText;
    private EditText mBodyText;
    private Button mDateButton;
    private Button mTimeButton;
    private Button mConfirmButton;
    private Long mRowId;
    private RemindersDbAdapter mDbHelper;
    private Calendar mCalendar;  
    
    
    
 
    @Override
      public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    final View v = inflater.inflate(R.layout.reminder_edit, container, false);
        
        mDbHelper = new RemindersDbAdapter(getActivity());
        
        
        mCalendar = Calendar.getInstance(); 
        mTitleText = (EditText) v.findViewById(R.id.title);
        mBodyText = (EditText) v.findViewById(R.id.body);
        mDateButton = (Button) v.findViewById(R.id.reminder_date);
        mTimeButton = (Button) v.findViewById(R.id.reminder_time);
      
        mConfirmButton = (Button) v.findViewById(R.id.confirm);
       
        mRowId = savedInstanceState != null ? savedInstanceState.getLong(RemindersDbAdapter.KEY_ROWID) 
                                            : null;
      
        registerButtonListenersAndSetDefaultText();
        return v;
    }
 
    private void setRowIdFromIntent()  {
        if (mRowId == null) {
            Bundle extras = getIntent().getExtras();            
            mRowId = extras != null ? extras.getLong(RemindersDbAdapter.KEY_ROWID) 
                                    : null;
            
        }
    }
    
   
 
    @Override
    public void onPause() {
        super.onPause();
        mDbHelper.close(); 
    }
    
    @Override
    public void onResume() {
        super.onResume();
        mDbHelper.open(); 
        setRowIdFromIntent();
        populateFields();
    }
    
    protected Dialog onCreateDialog(int id) {
        switch(id) {
            case DATE_PICKER_DIALOG: 
                return showDatePicker();
            case TIME_PICKER_DIALOG: 
                return showTimePicker(); 
        }
        return onCreateDialog(id);
    }
    
    private DatePickerDialog showDatePicker() {
        
        
        DatePickerDialog datePicker = new DatePickerDialog(getActivity(), new DatePickerDialog.OnDateSetListener() {
            
            @Override
            public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                mCalendar.set(Calendar.YEAR, year);
                mCalendar.set(Calendar.MONTH, monthOfYear);
                mCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);
                updateDateButtonText(); 
            }
        }, mCalendar.get(Calendar.YEAR), mCalendar.get(Calendar.MONTH), mCalendar.get(Calendar.DAY_OF_MONTH)); 
        return datePicker; 
    }
 
   private TimePickerDialog showTimePicker() {
        
        TimePickerDialog timePicker = new TimePickerDialog(getActivity(), new TimePickerDialog.OnTimeSetListener() {
            
            @Override
            public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
                mCalendar.set(Calendar.HOUR_OF_DAY, hourOfDay);
                mCalendar.set(Calendar.MINUTE, minute); 
                updateTimeButtonText(); 
            }
        }, mCalendar.get(Calendar.HOUR_OF_DAY), mCalendar.get(Calendar.MINUTE), true); 
        
        return timePicker; 
    }
    
    private void registerButtonListenersAndSetDefaultText() {
 
        mDateButton.setOnClickListener(new View.OnClickListener() {
            
            @Override
            public void onClick(View v) {
                showDialog(DATE_PICKER_DIALOG);  
            }
        }); 
        
        
        mTimeButton.setOnClickListener(new View.OnClickListener() {
            
            @Override
            public void onClick(View v) {
                showDialog(TIME_PICKER_DIALOG); 
            }
        }); 
        
        mConfirmButton.setOnClickListener(new View.OnClickListener() {
            public void onClick(View view) {
                saveState(); 
                
                Toast.makeText(getActivity(), getString(R.string.task_saved_message), Toast.LENGTH_SHORT).show();
            
                  return;
            }
          
        });
        
          updateDateButtonText(); 
          updateTimeButtonText();
    }
   
    private void populateFields()  {
        
    
        
        // Only populate the text boxes and change the calendar date
        // if the row is not null from the database. 
        if (mRowId != null) {
            Cursor reminder = mDbHelper.fetchReminder(mRowId);
            startManagingCursor(reminder);
            mTitleText.setText(reminder.getString(
                    reminder.getColumnIndexOrThrow(RemindersDbAdapter.KEY_TITLE)));
            mBodyText.setText(reminder.getString(
                    reminder.getColumnIndexOrThrow(RemindersDbAdapter.KEY_BODY)));
            
 
            // Get the date from the database and format it for our use. 
            SimpleDateFormat dateTimeFormat = new SimpleDateFormat(DATE_TIME_FORMAT);
            Date date = null;
            try {
                String dateString = reminder.getString(reminder.getColumnIndexOrThrow(RemindersDbAdapter.KEY_DATE_TIME)); 
                date = dateTimeFormat.parse(dateString);
                mCalendar.setTime(date); 
            } catch (ParseException e) {
                Log.e("ReminderEditActivity", e.getMessage(), e); 
            } 
        } else {
            // This is a new task - add defaults from preferences if set. 
            SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity()); 
            String defaultTitleKey = getString(R.string.pref_task_title_key); 
            String defaultTimeKey = getString(R.string.pref_default_time_from_now_key); 
            
            String defaultTitle = prefs.getString(defaultTitleKey, null);
            String defaultTime = prefs.getString(defaultTimeKey, null); 
            
            if(defaultTitle != null)
                mTitleText.setText(defaultTitle); 
            
            if(defaultTime != null)
                mCalendar.add(Calendar.MINUTE, Integer.parseInt(defaultTime));
            
        }
        
        updateDateButtonText(); 
        updateTimeButtonText(); 
            
    }
 
    private void updateTimeButtonText() {
        // Set the time button text based upon the value from the database
        SimpleDateFormat timeFormat = new SimpleDateFormat(TIME_FORMAT); 
        String timeForButton = timeFormat.format(mCalendar.getTime()); 
        mTimeButton.setText(timeForButton);
    }
 
    private void updateDateButtonText() {
        // Set the date button text based upon the value from the database 
        SimpleDateFormat dateFormat = new SimpleDateFormat(DATE_FORMAT); 
        String dateForButton = dateFormat.format(mCalendar.getTime()); 
        mDateButton.setText(dateForButton);
    }
    
    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putLong(RemindersDbAdapter.KEY_ROWID, mRowId);
    }
    
 
    
    private void saveState() {
        String title = mTitleText.getText().toString();
        String body = mBodyText.getText().toString();
 
        SimpleDateFormat dateTimeFormat = new SimpleDateFormat(DATE_TIME_FORMAT); 
        String reminderDateTime = dateTimeFormat.format(mCalendar.getTime());
 
        if (mRowId == null) {
            
            long id = mDbHelper.createReminder(title, body, reminderDateTime);
            if (id > 0) {
                mRowId = id;
            }
        } else {
            mDbHelper.updateReminder(mRowId, title, body, reminderDateTime);
        }
       
        new ReminderManager(getActivity()).setReminder(mRowId, mCalendar); 
        
        
    }
    
}
Ошибки выдаёт:

81 строка не катит getIntent()
151 и 160 строка ошибка в showDialog (TIME_PICKER_DIALOG)

Не хватает знаний понять что делать дальше, может дело в том, что в TaskRemainder используется устаревший метод программирования?

Кстати кто делает подобное - в решении очень помогает getActivity()
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 12:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru