From 137f337cfe6f4841a15814cd0537aa0b8e74323a Mon Sep 17 00:00:00 2001 From: Felix Ableitner Date: Thu, 30 Oct 2014 20:59:33 +0200 Subject: [PATCH] Removed chat fragment caching. --- app/src/main/res/layout/activity_main.xml | 6 +-- .../ensichat/activities/MainActivity.scala | 41 ++++++------------- 2 files changed, 14 insertions(+), 33 deletions(-) diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 600a96d..da8b68a 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -1,10 +1,6 @@ - - diff --git a/app/src/main/scala/com/nutomic/ensichat/activities/MainActivity.scala b/app/src/main/scala/com/nutomic/ensichat/activities/MainActivity.scala index 26a379d..ddbbec0 100644 --- a/app/src/main/scala/com/nutomic/ensichat/activities/MainActivity.scala +++ b/app/src/main/scala/com/nutomic/ensichat/activities/MainActivity.scala @@ -10,8 +10,6 @@ import com.nutomic.ensichat.R import com.nutomic.ensichat.bluetooth.{ChatService, Device} import com.nutomic.ensichat.fragments.{ChatFragment, ContactsFragment} -import scala.collection.mutable.HashMap - /** * Main activity, entry point for app start. */ @@ -21,8 +19,6 @@ class MainActivity extends Activity { private var ContactsFragment: ContactsFragment = _ - private val ChatFragments = new HashMap[Device.ID, ChatFragment]() - private var currentChat: Option[Device.ID] = None /** @@ -37,23 +33,21 @@ class MainActivity extends Activity { Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE) intent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 0) startActivityForResult(intent, RequestSetDiscoverable) + val fm = getFragmentManager if (savedInstanceState != null) { ContactsFragment = fm.getFragment(savedInstanceState, classOf[ContactsFragment].getName) .asInstanceOf[ContactsFragment] - for (i <- 0 until savedInstanceState.getInt("chat_fragments_count", 0)) { - val key = classOf[ChatFragment].getName + i - val cf = fm.getFragment(savedInstanceState, key).asInstanceOf[ChatFragment] - ChatFragments += (cf.getDevice -> cf) + if (savedInstanceState.containsKey("current_chat")) { + currentChat = Option(new Device.ID(savedInstanceState.getString("current_chat"))) + openChat(currentChat.get) } - currentChat = Some(new Device.ID(savedInstanceState.getString("current_chat"))) - currentChat.collect{case c => openChat(c) } } else { ContactsFragment = new ContactsFragment() + fm.beginTransaction() + .add(android.R.id.content, ContactsFragment) + .commit() } - fm.beginTransaction() - .add(android.R.id.content, ContactsFragment) - .commit() } /** @@ -62,13 +56,7 @@ class MainActivity extends Activity { override def onSaveInstanceState(outState: Bundle): Unit = { super.onSaveInstanceState(outState) getFragmentManager.putFragment(outState, classOf[ContactsFragment].getName, ContactsFragment) - outState.putInt("chat_fragments_count", ChatFragments.size) - var i: Int = 0 - ChatFragments.foreach(cf => { - getFragmentManager.putFragment(outState, classOf[ChatFragment].getName + i, cf._2) - i += 1 - }) - outState.putString("current_chat", currentChat.toString) + currentChat.collect{case c => outState.putString("current_chat", c.toString)} } override def onCreateOptionsMenu(menu: Menu): Boolean = { @@ -105,13 +93,10 @@ class MainActivity extends Activity { */ def openChat(device: Device.ID): Unit = { currentChat = Some(device) - val ft = getFragmentManager.beginTransaction() - if (!ChatFragments.keySet.contains(device)) { - ChatFragments += (device -> new ChatFragment(device)) - ft.add(android.R.id.content, ChatFragments.apply(device)) - } - ft.detach(ContactsFragment) - .attach(ChatFragments.apply(device)) + getFragmentManager + .beginTransaction() + .detach(ContactsFragment) + .add(android.R.id.content, new ChatFragment(device)) .commit() } @@ -122,7 +107,7 @@ class MainActivity extends Activity { if (currentChat != None) { getFragmentManager .beginTransaction() - .detach(ChatFragments.apply(currentChat.get)) + .remove(getFragmentManager().findFragmentById(android.R.id.content)) .attach(ContactsFragment) .commit() currentChat = None