blob: 154c2e48701a30069da1e9c4a3bc45295c04429c [file] [log] [blame]
David Morrissey44e24922017-11-20 10:36:41 +00001package com.davemorrissey.labs.subscaleview.test;
David Morrisseyc930ef72017-11-02 18:27:22 +00002
3import android.app.ActionBar;
4import android.os.Bundle;
5import android.support.annotation.Nullable;
6import android.support.v4.app.FragmentActivity;
7import android.view.MenuItem;
8
9import java.util.List;
10
11public abstract class AbstractFragmentsActivity extends FragmentActivity {
12
13 private static final String BUNDLE_PAGE = "page";
14
15 private int page;
16
17 private final int title;
18 private final int layout;
19 private final List<Page> notes;
20
21 protected abstract void onPageChanged(int page);
22
23 protected AbstractFragmentsActivity(int title, int layout, List<Page> notes) {
24 this.title = title;
25 this.layout = layout;
26 this.notes = notes;
27 }
28
29 @Override
30 protected void onCreate(@Nullable Bundle savedInstanceState) {
31 super.onCreate(savedInstanceState);
32 setContentView(layout);
33 ActionBar actionBar = getActionBar();
34 if (actionBar != null) {
35 actionBar.setTitle(getString(title));
36 actionBar.setDisplayHomeAsUpEnabled(true);
37 }
38 if (savedInstanceState != null && savedInstanceState.containsKey(BUNDLE_PAGE)) {
39 page = savedInstanceState.getInt(BUNDLE_PAGE);
40 }
41 }
42
43 @Override
44 protected void onResume() {
45 super.onResume();
46 updateNotes();
47 }
48
49 @Override
50 protected void onSaveInstanceState(Bundle outState) {
51 super.onSaveInstanceState(outState);
52 outState.putInt(BUNDLE_PAGE, page);
53 }
54
55 @Override
56 public boolean onOptionsItemSelected(MenuItem item) {
57 finish();
58 return true;
59 }
60
61 public void next() {
62 page++;
63 updateNotes();
64 }
65
66 public void previous() {
67 page--;
68 updateNotes();
69 }
70
71 private void updateNotes() {
72 if (page > notes.size() - 1) {
73 return;
74 }
75 ActionBar actionBar = getActionBar();
76 if (actionBar != null) {
77 actionBar.setSubtitle(notes.get(page).getSubtitle());
78 }
79 onPageChanged(page);
80 }
81
82}