Fixes menu selection issue

This commit is contained in:
tom79 2017-07-26 09:21:47 +02:00
parent 8c3c30215d
commit c608f0bdf0
4 changed files with 52 additions and 42 deletions

View File

@ -29,7 +29,6 @@ import android.support.v4.app.FragmentManager;
import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager;
import android.support.v7.app.AlertDialog; import android.support.v7.app.AlertDialog;
import android.support.v7.widget.SearchView; import android.support.v7.widget.SearchView;
import android.util.Log;
import android.view.View; import android.view.View;
import android.support.design.widget.NavigationView; import android.support.design.widget.NavigationView;
import android.support.v4.view.GravityCompat; import android.support.v4.view.GravityCompat;
@ -105,7 +104,6 @@ public class MainActivity extends AppCompatActivity
private ViewPager viewPager; private ViewPager viewPager;
private RelativeLayout main_app_container; private RelativeLayout main_app_container;
private Stack<Integer> stackBack = new Stack<>(); private Stack<Integer> stackBack = new Stack<>();
public MainActivity() { public MainActivity() {
} }
@ -194,7 +192,7 @@ public class MainActivity extends AppCompatActivity
if( item != null){ if( item != null){
toolbarTitle.setText(item.getTitle()); toolbarTitle.setText(item.getTitle());
populateTitleWithTag(fragmentTag, item.getTitle().toString(), item.getItemId()); populateTitleWithTag(fragmentTag, item.getTitle().toString(), item.getItemId());
unCheckAllMenuItems(navigationView.getMenu()); unCheckAllMenuItems(navigationView);
item.setChecked(true); item.setChecked(true);
} }
if( tab.getPosition() < 3 ) if( tab.getPosition() < 3 )
@ -365,17 +363,17 @@ public class MainActivity extends AppCompatActivity
final NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); final NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
userIdIntent = extras.getString(PREF_KEY_ID); //Id of the account in the intent userIdIntent = extras.getString(PREF_KEY_ID); //Id of the account in the intent
if (extras.getInt(INTENT_ACTION) == NOTIFICATION_INTENT){ if (extras.getInt(INTENT_ACTION) == NOTIFICATION_INTENT){
unCheckAllMenuItems(navigationView.getMenu());
changeUser(MainActivity.this, userIdIntent, false); //Connects the account which is related to the notification changeUser(MainActivity.this, userIdIntent, false); //Connects the account which is related to the notification
unCheckAllMenuItems(navigationView);
tabLayout.getTabAt(3).select(); tabLayout.getTabAt(3).select();
matchingIntent = true; matchingIntent = true;
}else if( extras.getInt(INTENT_ACTION) == HOME_TIMELINE_INTENT){ }else if( extras.getInt(INTENT_ACTION) == HOME_TIMELINE_INTENT){
unCheckAllMenuItems(navigationView.getMenu()); unCheckAllMenuItems(navigationView);
changeUser(MainActivity.this, userIdIntent, false); //Connects the account which is related to the notification changeUser(MainActivity.this, userIdIntent, false); //Connects the account which is related to the notification
tabLayout.getTabAt(0).select(); tabLayout.getTabAt(0).select();
matchingIntent = true; matchingIntent = true;
}else if( extras.getInt(INTENT_ACTION) == CHANGE_THEME_INTENT){ }else if( extras.getInt(INTENT_ACTION) == CHANGE_THEME_INTENT){
unCheckAllMenuItems(navigationView.getMenu()); unCheckAllMenuItems(navigationView);
navigationView.setCheckedItem(R.id.nav_settings); navigationView.setCheckedItem(R.id.nav_settings);
navigationView.getMenu().performIdentifierAction(R.id.nav_settings, 0); navigationView.getMenu().performIdentifierAction(R.id.nav_settings, 0);
toolbarTitle.setText(R.string.settings); toolbarTitle.setText(R.string.settings);
@ -424,7 +422,7 @@ public class MainActivity extends AppCompatActivity
tabLayout.setVisibility(View.VISIBLE); tabLayout.setVisibility(View.VISIBLE);
main_app_container.setVisibility(View.GONE); main_app_container.setVisibility(View.GONE);
final NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); final NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
unCheckAllMenuItems(navigationView.getMenu()); unCheckAllMenuItems(navigationView);
toot.setVisibility(View.VISIBLE); toot.setVisibility(View.VISIBLE);
switch (viewPager.getCurrentItem()){ switch (viewPager.getCurrentItem()){
@ -526,6 +524,7 @@ public class MainActivity extends AppCompatActivity
//Proceeds to update of the authenticated account //Proceeds to update of the authenticated account
if(Helper.isLoggedIn(getApplicationContext())) if(Helper.isLoggedIn(getApplicationContext()))
new UpdateAccountInfoByIDAsyncTask(getApplicationContext(), MainActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); new UpdateAccountInfoByIDAsyncTask(getApplicationContext(), MainActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
} }
@ -537,7 +536,7 @@ public class MainActivity extends AppCompatActivity
// Handle navigation view item clicks here. // Handle navigation view item clicks here.
int id = item.getItemId(); int id = item.getItemId();
final NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); final NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
unCheckAllMenuItems(navigationView.getMenu()); unCheckAllMenuItems(navigationView);
item.setChecked(true); item.setChecked(true);
//Remove the search bar //Remove the search bar
if( !toolbar_search.isIconified() ) { if( !toolbar_search.isIconified() ) {

View File

@ -28,7 +28,6 @@ import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.support.v4.content.ContextCompat; import android.support.v4.content.ContextCompat;
import android.text.Html; import android.text.Html;
import android.util.Log;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;

View File

@ -1029,21 +1029,21 @@ public class Helper {
int matchEnd = matcher.end(); int matchEnd = matcher.end();
final String url = spannableString.toString().substring(matchStart, matchEnd); final String url = spannableString.toString().substring(matchStart, matchEnd);
spannableString.setSpan(new ClickableSpan() { spannableString.setSpan(new ClickableSpan() {
@Override @Override
public void onClick(View textView) { public void onClick(View textView) {
Intent intent = new Intent(context, WebviewActivity.class); Intent intent = new Intent(context, WebviewActivity.class);
Bundle b = new Bundle(); Bundle b = new Bundle();
b.putString("url", url); b.putString("url", url);
intent.putExtras(b); intent.putExtras(b);
context.startActivity(intent); context.startActivity(intent);
} }
@Override @Override
public void updateDrawState(TextPaint ds) { public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds); super.updateDrawState(ds);
} }
}, },
matchStart, matchEnd, matchStart, matchEnd,
Spanned.SPAN_INCLUSIVE_EXCLUSIVE); Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
} }
} }
@ -1057,21 +1057,21 @@ public class Helper {
int startPosition = spannableString.toString().indexOf(targetedAccount); int startPosition = spannableString.toString().indexOf(targetedAccount);
int endPosition = spannableString.toString().lastIndexOf(targetedAccount) + targetedAccount.length(); int endPosition = spannableString.toString().lastIndexOf(targetedAccount) + targetedAccount.length();
spannableString.setSpan(new ClickableSpan() { spannableString.setSpan(new ClickableSpan() {
@Override @Override
public void onClick(View textView) { public void onClick(View textView) {
Intent intent = new Intent(context, ShowAccountActivity.class); Intent intent = new Intent(context, ShowAccountActivity.class);
Bundle b = new Bundle(); Bundle b = new Bundle();
b.putString("accountId", mention.getId()); b.putString("accountId", mention.getId());
intent.putExtras(b); intent.putExtras(b);
context.startActivity(intent); context.startActivity(intent);
} }
@Override @Override
public void updateDrawState(TextPaint ds) { public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds); super.updateDrawState(ds);
} }
}, },
startPosition, endPosition, startPosition, endPosition,
Spanned.SPAN_INCLUSIVE_EXCLUSIVE); Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
} }
@ -1373,12 +1373,19 @@ public class Helper {
return false; return false;
} }
public static void unCheckAllMenuItems(@NonNull final Menu menu) {
public static void unCheckAllMenuItems(NavigationView navigationView){
navigationView.setCheckedItem(R.id.menu_none);
unCheckAllMenuItemsRec(navigationView.getMenu());
}
private static void unCheckAllMenuItemsRec(@NonNull final Menu menu) {
int size = menu.size(); int size = menu.size();
for (int i = 0; i < size; i++) { for (int i = 0; i < size; i++) {
final MenuItem item = menu.getItem(i); final MenuItem item = menu.getItem(i);
if(item.hasSubMenu()) { if(item.hasSubMenu()) {
unCheckAllMenuItems(item.getSubMenu()); unCheckAllMenuItemsRec(item.getSubMenu());
} else { } else {
item.setChecked(false); item.setChecked(false);
} }

View File

@ -1,19 +1,24 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"> <menu xmlns:android="http://schemas.android.com/apk/res/android">
<group android:checkableBehavior="single"> <group android:checkableBehavior="single">
<item android:id="@+id/nav_account_list" <item android:id="@+id/nav_account_list"
android:visible="false" android:visible="false"
android:title="@string/accounts"> android:title="@string/accounts">
<menu /></item> <menu /></item>
</group> </group>
<group android:checkableBehavior="single"> <group>
<item <item
android:title="@string/communication_menu_title" android:title="@string/communication_menu_title"
android:id="@+id/nav_main_com" android:id="@+id/nav_main_com"
> >
<menu> <menu>
<group android:checkableBehavior="single"> <group android:checkableBehavior="single">
<item
android:id="@+id/menu_none"
android:title=""
android:visible="false"/>
<item <item
android:id="@+id/nav_home" android:id="@+id/nav_home"
android:icon="@drawable/ic_action_home" android:icon="@drawable/ic_action_home"