From d2385166cb81884f012647e61cfd575121c65170 Mon Sep 17 00:00:00 2001
From: str4d <str4d@mail.i2p>
Date: Sat, 11 Jan 2014 22:30:12 +0000
Subject: [PATCH] Fixed race between router binding and onCreateOptionsMenu()

---
 .../addressbook/AddressbookActivity.java      |  3 --
 .../addressbook/AddressbookFragment.java      | 32 +++++++++++++------
 2 files changed, 23 insertions(+), 12 deletions(-)

diff --git a/src/net/i2p/android/router/addressbook/AddressbookActivity.java b/src/net/i2p/android/router/addressbook/AddressbookActivity.java
index 181a00e9b..8a6050e30 100644
--- a/src/net/i2p/android/router/addressbook/AddressbookActivity.java
+++ b/src/net/i2p/android/router/addressbook/AddressbookActivity.java
@@ -2,9 +2,6 @@ package net.i2p.android.router.addressbook;
 
 import net.i2p.android.router.I2PActivityBase;
 import net.i2p.android.router.R;
-import net.i2p.android.router.I2PActivityBase.TabListener;
-import net.i2p.android.router.web.WebActivity;
-import net.i2p.android.router.web.WebFragment;
 import android.app.Activity;
 import android.app.SearchManager;
 import android.content.Context;
diff --git a/src/net/i2p/android/router/addressbook/AddressbookFragment.java b/src/net/i2p/android/router/addressbook/AddressbookFragment.java
index 19ef0e598..b0dbf34dd 100644
--- a/src/net/i2p/android/router/addressbook/AddressbookFragment.java
+++ b/src/net/i2p/android/router/addressbook/AddressbookFragment.java
@@ -105,6 +105,11 @@ public class AddressbookFragment extends ListFragment implements
     }
 
     public void onRouterConnectionReady() {
+        // Show actions
+        mSearchAddressbook.setVisible(true);
+        if (mAddToAddressbook != null)
+            mAddToAddressbook.setVisible(false);
+
         if (mAddWizardData != null) {
             // Save the new entry
             Bundle entryData = mAddWizardData.getExtras().getBundle(ADD_WIZARD_DATA);
@@ -130,24 +135,33 @@ public class AddressbookFragment extends ListFragment implements
         mCallback.onAddressSelected(host);
     }
 
+    private MenuItem mSearchAddressbook;
+    private MenuItem mAddToAddressbook;
+
     @Override
     public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
-    	inflater.inflate(R.menu.fragment_addressbook_actions, menu);
+        inflater.inflate(R.menu.fragment_addressbook_actions, menu);
+
+        mSearchAddressbook = menu.findItem(R.id.action_search_addressbook);
+        mAddToAddressbook = menu.findItem(R.id.action_add_to_addressbook);
 
-    	// Only allow adding to private book 
-    	if (!PRIVATE_BOOK.equals(mBook))
-    	    menu.findItem(R.id.action_add_to_addressbook).setVisible(false);
+        // Hide until needed
+        if (getRouterContext() == null) {
+            mSearchAddressbook.setVisible(false);
+            mAddToAddressbook.setVisible(false);
+        }
 
-    	if (getRouterContext() == null) {
-    	    menu.findItem(R.id.action_search_addressbook).setVisible(false);
-    	    menu.findItem(R.id.action_add_to_addressbook).setVisible(false);
-    	}
+        // Only allow adding to private book 
+        if (!PRIVATE_BOOK.equals(mBook)) {
+            mAddToAddressbook.setVisible(false);
+            mAddToAddressbook = null;
+        }
     }
 
     @Override
     public boolean onOptionsItemSelected(MenuItem item) {
         // Handle presses on the action bar items
-        
+
         switch (item.getItemId()) {
         case R.id.action_add_to_addressbook:
             Intent wi = new Intent(getActivity(), AddressbookAddWizardActivity.class);
-- 
GitLab