|  Приложение А(обязательное)
 
 Интерфейс программы
 
 Экран со списком активных задач (начальный):
 
  
 Рисунок – Список активных задач
 
 Экран добавления новой задачи:
 
 
  
 Рисунок – Добавление новой задачи
 
 Экран редактирования информации об активных задачах:
 
 
  
 Рисунок – Редактирование активной задачи
 
 Экран со списком завершенных задач:
 
 
  
 Рисунок – Список завершенных задач
 
 Экран изменения информации о завершенных задачах:
 
 
  
 Рисунок – Редактирование завершенной задачи
 
 Экран с действиями для задачи, для которой сработало напоминание:
 
 
  
 Рисунок – Действия над задачей
 
  Приложение Б(обязательное)
 
 Листинг приложения
 
 import android.app.Activity;
 import android.app.FragmentTransaction;
 import android.content.Context;
 import android.content.Intent;
 import android.content.SharedPreferences;
 import android.os.Bundle;
 import android.view.View;
 
 import com.myproject.taskmanager.R;
 import com.myproject.taskmanager.dao.TaskDao;
 import com.myproject.taskmanager.service.MyService;
 
 public class MainActivity extends Activity {
 //главная активность приложения. инициализирует TaskDao. запускает сервис для мониторинга задач.
 ActiveActivity frag1;
 FinishActivity frag2;
 FragmentTransaction fTrans;
 SharedPreferences sPref;
 public static Activity activity;
 
 @Override
 public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState); //вызыывается метод родительского класса, пдключается главная разметка
 setContentView(R.layout.activity_main);
 
 frag1 = new ActiveActivity();
 frag2 = new FinishActivity();
 
 fTrans = getFragmentManager().beginTransaction();
 fTrans.add(R.id.fragment1,frag1);
 fTrans.commit();
 
 sPref = getSharedPreferences("SP", Context.MODE_APPEND);
 TaskDao.init(sPref);
 activity = this;
 startService(new Intent(this, MyService.class));
 }
 
 public void addFragment1(View v){
 fTrans = getFragmentManager().beginTransaction();//Начало транзакции
 fTrans.replace(R.id.fragment1,frag1);//заменяем франмент
 fTrans.commit();//коммитим транзакцию(фиксируем изменения)
 }
 
 public void addFragment2(View v){
 fTrans = getFragmentManager().beginTransaction();
 fTrans.replace(R.id.fragment1, frag2);
 fTrans.commit();
 }
 }
 
 Листинг Б.1, лист 1
 
 import android.app.Activity;
 import android.app.Fragment;
 import android.content.Intent;
 import android.os.Bundle;
 import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.AdapterView;
 import android.widget.ArrayAdapter;
 import android.widget.LinearLayout;
 import android.widget.ListView;
 import android.widget.TextView;
 import com.myproject.taskmanager.R;
 import com.myproject.taskmanager.dao.TaskDao;
 import com.myproject.taskmanager.pojo.Task;
 import org.json.JSONException;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
 //активность отображающая список завершенных задач, а также позволяет активировать задачу
 public class FinishActivity extends Fragment {
 
 static Map tasksMap = new HashMap<>();
 static ListView listView;
 LinearLayout linearLayout;
 static List tasks;
 static Activity activity;
 
 @Override
 public View onCreateView(LayoutInflater inflater, ViewGroup container,
 Bundle savedInstanceState) { //подключаем разметку
 
 
 View v = inflater.inflate(R.layout.list_view_finish, null);//связываем view с layout
 listView = (ListView) v.findViewById(R.id.listView);
 linearLayout = (LinearLayout) v.findViewById(R.id.LinearLayout);
 activity = getActivity();
 
 try {
 tasks = TaskDao.getFinishedTasks();
 
 for (Task t : tasks) {
 tasksMap.put(t.getTaskName(), t);
 }
 
 ArrayAdapter adapter = new ArrayAdapter(getActivity(), android.R.layout.simple_list_item_1, tasks);
 
 listView.setAdapter(adapter);
 listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
 @Override
 public void onItemClick(AdapterView>
           parent, View itemClicked, int position,
 long id) {
 try {
 
 Листинг Б.2, лист 1
 
 
 TextView textView = (TextView) itemClicked;
 String strText = textView.getText().toString(); // получаем текст нажатого элемента
 
 Intent intent = (new Intent(getActivity(), InfoActivity.class));
 
 Task task = tasksMap.get(strText);
 
 intent.putExtra("name", task.getJson());
 
 startActivity(intent);
 } catch (JSONException e) {
 e.printStackTrace();
 
 }
 }
 
 });
 } catch (JSONException e) {
 Log.d("Except", e.toString());
 }
 return v;
 
 }
 
 public static void refreshTasks(){
 try {
 if (activity!=null){
 tasks = TaskDao.getFinishedTasks();
 
 ArrayAdapter adapter = new ArrayAdapter(activity, android.R.layout.simple_list_item_1, tasks);
 listView.setAdapter(adapter);
 for (Task t : tasks) {
 tasksMap.put(t.getTaskName(), t);
 }
 }
 } catch (JSONException e) {
 e.printStackTrace();
 }
 }
 }
 
 Листинг Б.2, лист 2
 
 import android.app.Activity;
 import android.content.Intent;
 import android.os.Bundle;
 import android.view.View;
 import android.widget.Button;
 import android.widget.DatePicker;
 import android.widget.EditText;
 import android.widget.TimePicker;
 import com.myproject.taskmanager.R;
 import com.myproject.taskmanager.dao.TaskDao;
 import com.myproject.taskmanager.pojo.Task;
 import org.json.JSONException;
 import java.util.Date;
 
 public class InfoActivity extends Activity {
 EditText editTextName;
 EditText editDescription;
 Task task;
 DatePicker datePicker;
 TimePicker timePicker;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 try {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.info_activity);
 
 Button save = (Button) findViewById(R.id.save);
 save.setOnClickListener(new View.OnClickListener() {
 @Override
 public void onClick(View v) {
 getInfoTask();
 finish();}
 });
 Button delete = (Button) findViewById(R.id.delete);
 delete.setOnClickListener(new View.OnClickListener() {
 @Override
 public void onClick(View v) {
 try {
 TaskDao.delete(task);
 } catch (JSONException e) {
 e.printStackTrace();
 }
 task=null;
 finish();
 }
 });
 Button close = (Button) findViewById(R.id.close);
 close.setOnClickListener(new View.OnClickListener() {
 @Override
 public void onClick(View v) {
 getInfoTask();
 task.setStatusFinished();
 finish();
 }
 });
 Button activate = (Button) findViewById(R.id.activate);
 activate.setOnClickListener(new View.OnClickListener() {
 @Override
 public void onClick(View v) {
 getInfoTask();
 task.setStatusActive();
 finish();}
 
 Листинг Б.3, лист 1
 
 });
 datePicker = (DatePicker) findViewById(R.id.datePicker);
 timePicker = (TimePicker) findViewById(R.id.timePicker);
 editTextName = (EditText) findViewById(R.id.editTextName);
 editDescription = (EditText) findViewById(R.id.editText);
 
 Intent intent = getIntent();
 delete.setVisibility(View.INVISIBLE);
 close.setVisibility(View.INVISIBLE);
 activate.setVisibility(View.INVISIBLE);
 save.setVisibility(View.INVISIBLE);
 if (!intent.getStringExtra("name").equals("")) {
 String value = intent.getStringExtra("name");
 task = new Task(value);
 TaskDao.delete(task);
 editTextName.setText(task.getTaskName());
 editDescription.setText(task.getDescription());
 Date date = new Date(task.getDate());
 datePicker.updateDate(2015, date.getMonth(), date.getDate());
 timePicker.setCurrentHour(date.getHours());
 timePicker.setCurrentMinute(date.getMinutes());
 delete.setVisibility(View.VISIBLE);
 }
 else {save.setVisibility(View.VISIBLE);}
 if (task.getStatus().equals("Active")) {
 close.setVisibility(View.VISIBLE);
 save.setVisibility(View.VISIBLE);
 }
 else{ activate.setVisibility(View.VISIBLE);}
 }catch (Exception e){
 e.printStackTrace();
 }}
 @Override
 public void finish() {
 if (task != null) {
 try {
 if (!task.getTaskName().equals(""))
 TaskDao.saveTask(task);
 } catch (JSONException e) {
 e.printStackTrace();
 }
 }
 ActiveActivity.refreshTasks();
 FinishActivity.refreshTasks();
 super.finish();
 }
 
 private void getInfoTask(){
 Date date = new Date();
 date.setMinutes(timePicker.getCurrentMinute());
 date.setHours(timePicker.getCurrentHour());
 date.setDate(datePicker.getDayOfMonth());
 date.setMonth(datePicker.getMonth());
 
 task = new Task(editTextName.getText().toString(),editDescription.getText().toString(),date.getTime());
 }
 }
 
 Листинг Б.3, лист 2
 
 import android.app.Activity;
 import android.app.Fragment;
 import android.content.Intent;
 import android.os.Bundle;
 import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.AdapterView;
 import android.widget.ArrayAdapter;
 import android.widget.Button;
 import android.widget.LinearLayout;
 import android.widget.ListView;
 import android.widget.TextView;
 import com.myproject.taskmanager.R;
 import com.myproject.taskmanager.dao.TaskDao;
 import com.myproject.taskmanager.pojo.Task;
 import org.json.JSONException;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
 //активность отображающая список активных задач, а также служит для добавления новых задач
 public class ActiveActivity extends Fragment {
 
 static Map tasksMap = new HashMap<>();
 static ListView listView;
 LinearLayout linearLayout;
 Button button;
 static List tasks;
 static Activity activity;
 
 @Override
 public View onCreateView(LayoutInflater inflater, ViewGroup container,
 Bundle savedInstanceState) { //подключаем разметку
 
 View v = inflater.inflate(R.layout.list_view_active, null);//связываем view с layout
 listView = (ListView) v.findViewById(R.id.listView);
 linearLayout = (LinearLayout) v.findViewById(R.id.LinearLayout);
 button = (Button) v.findViewById(R.id.button3);
 activity = getActivity();
 
 button.setOnClickListener(new View.OnClickListener() {
 @Override
 public void onClick(View v) {
 Intent intent = (new Intent(getActivity(), InfoActivity.class));
 intent.putExtra("name", "");
 startActivity(intent);
 }
 });
 try {
 
 tasks = TaskDao.getActiveTasks();
 
 for (Task t : tasks) {
 tasksMap.put(t.getTaskName(), t);
 }
 
 
 Листинг Б.4, лист 1
 
 
 ArrayAdapter adapter = new ArrayAdapter(getActivity(), android.R.layout.simple_list_item_1, tasks);
 
 listView.setAdapter(adapter);
 
 listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
 @Override
 public void onItemClick(AdapterView>
           parent, View itemClicked, int position,
 |