properly handle orientation changes

This commit is contained in:
tibbi 2017-11-20 11:18:55 +01:00
parent ed3ad32fa5
commit b0362dfa1a
3 changed files with 20 additions and 9 deletions

View File

@ -6,7 +6,10 @@ import android.support.v4.view.ViewPager
import android.text.method.ArrowKeyMovementMethod import android.text.method.ArrowKeyMovementMethod
import android.text.method.LinkMovementMethod import android.text.method.LinkMovementMethod
import android.util.TypedValue import android.util.TypedValue
import android.view.* import android.view.ActionMode
import android.view.Gravity
import android.view.Menu
import android.view.MenuItem
import com.simplemobiletools.commons.dialogs.FilePickerDialog import com.simplemobiletools.commons.dialogs.FilePickerDialog
import com.simplemobiletools.commons.dialogs.RadioGroupDialog import com.simplemobiletools.commons.dialogs.RadioGroupDialog
import com.simplemobiletools.commons.extensions.* import com.simplemobiletools.commons.extensions.*
@ -31,7 +34,6 @@ import com.simplemobiletools.notes.helpers.OPEN_NOTE_ID
import com.simplemobiletools.notes.helpers.TYPE_NOTE import com.simplemobiletools.notes.helpers.TYPE_NOTE
import com.simplemobiletools.notes.models.Note import com.simplemobiletools.notes.models.Note
import kotlinx.android.synthetic.main.activity_main.* import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.android.synthetic.main.fragment_note.*
import java.io.File import java.io.File
import java.nio.charset.Charset import java.nio.charset.Charset
@ -212,7 +214,11 @@ class MainActivity : SimpleActivity(), ViewPager.OnPageChangeListener {
hideKeyboard() hideKeyboard()
} }
private fun currentNotesView() = if (view_pager == null) null else mAdapter?.getItem(view_pager.currentItem)?.notes_view private fun currentNotesView() = if (view_pager == null) {
null
} else {
mAdapter?.getCurrentNotesView(view_pager.currentItem)
}
private fun displayRenameDialog() { private fun displayRenameDialog() {
RenameNoteDialog(this, mDb, mCurrentNote) { RenameNoteDialog(this, mDb, mCurrentNote) {
@ -241,12 +247,9 @@ class MainActivity : SimpleActivity(), ViewPager.OnPageChangeListener {
invalidateOptionsMenu() invalidateOptionsMenu()
initViewPager() initViewPager()
updateSelectedNote(id) updateSelectedNote(id)
view_pager.viewTreeObserver.addOnGlobalLayoutListener(object : ViewTreeObserver.OnGlobalLayoutListener { view_pager.onGlobalLayout {
override fun onGlobalLayout() { mAdapter?.focusEditText(getNoteIndexWithId(id))
mAdapter?.focusEditText(getNoteIndexWithId(id)) }
view_pager.viewTreeObserver.removeOnGlobalLayoutListener(this)
}
})
} }
private fun launchAbout() { private fun launchAbout() {

View File

@ -33,6 +33,8 @@ class NotesPagerAdapter(fm: FragmentManager, val notes: List<Note>, val activity
override fun getPageTitle(position: Int) = notes[position].title override fun getPageTitle(position: Int) = notes[position].title
fun getCurrentNotesView(position: Int) = fragments[position]?.getNotesView()
fun getCurrentNoteViewText(position: Int) = fragments[position]?.getCurrentNoteViewText() fun getCurrentNoteViewText(position: Int) = fragments[position]?.getCurrentNoteViewText()
fun appendText(position: Int, text: String) = fragments[position]?.getNotesView()?.append(text) fun appendText(position: Int, text: String) = fragments[position]?.getNotesView()?.append(text)
@ -48,4 +50,9 @@ class NotesPagerAdapter(fm: FragmentManager, val notes: List<Note>, val activity
activity.showErrorToast(e) activity.showErrorToast(e)
} }
} }
override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) {
super.destroyItem(container, position, `object`)
fragments.removeAt(position)
}
} }

View File

@ -32,6 +32,7 @@ class NoteFragment : Fragment() {
noteId = arguments!!.getInt(NOTE_ID) noteId = arguments!!.getInt(NOTE_ID)
mDb = context!!.dbHelper mDb = context!!.dbHelper
note = mDb.getNote(noteId) ?: return view note = mDb.getNote(noteId) ?: return view
retainInstance = true
if (context!!.config.clickableLinks) { if (context!!.config.clickableLinks) {
view.notes_view.apply { view.notes_view.apply {