Example usage for android.app FragmentManager findFragmentByTag

List of usage examples for android.app FragmentManager findFragmentByTag

Introduction

In this page you can find the example usage for android.app FragmentManager findFragmentByTag.

Prototype

public abstract Fragment findFragmentByTag(String tag);

Source Link

Document

Finds a fragment that was identified by the given tag either when inflated from XML or as supplied when added in a transaction.

Usage

From source file:com.google.samples.apps.iosched.ui.BaseActivity.java

/**
 * Adds a {@link com.google.samples.apps.iosched.framework.PresenterFragmentImpl} to the
 * Activity if required, and sets it up with the {@code model}, {@code queries},
 * {@code actions} and the {@link com.google.samples.apps.iosched.framework.UpdatableView}
 * corresponding to the {@code updatableViewResId}.
 *
 * @return the {@link com.google.samples.apps.iosched.framework.PresenterFragmentImpl},
 *//*from   ww w . java  2 s. com*/
public PresenterFragmentImpl addPresenterFragment(int updatableViewResId, Model model, QueryEnum[] queries,
        UserActionEnum[] actions) {
    FragmentManager fragmentManager = getFragmentManager();

    //Check if the presenter fragment is already present (ie if the activity is recreated due
    // to orientation change).
    PresenterFragmentImpl presenter = (PresenterFragmentImpl) fragmentManager.findFragmentByTag(PRESENTER_TAG);
    if (presenter == null) {
        //Create, set up and add the presenter.
        presenter = new PresenterFragmentImpl();
        setUpPresenter(presenter, fragmentManager, updatableViewResId, model, queries, actions);
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        fragmentTransaction.add(presenter, PRESENTER_TAG);
        fragmentTransaction.commit();
    } else {
        //Set up the presenter.
        setUpPresenter(presenter, fragmentManager, updatableViewResId, model, queries, actions);
    }
    return presenter;
}

From source file:org.opendatakit.survey.activities.MainMenuActivity.java

@Override
public void databaseUnavailable() {
    FragmentManager mgr = this.getFragmentManager();
    if (currentFragment != null) {
        Fragment fragment = mgr.findFragmentByTag(currentFragment.name());
        if (fragment instanceof DatabaseConnectionListener) {
            ((DatabaseConnectionListener) fragment).databaseUnavailable();
        }/*from  ww  w  .j a v a2  s. c o  m*/
    }
    if (mIOdkDataDatabaseListener != null) {
        mIOdkDataDatabaseListener.databaseUnavailable();
    }
}

From source file:org.opendatakit.survey.activities.MainMenuActivity.java

@Override
public void databaseAvailable() {
    if (getAppName() != null) {
        resolveAnyConflicts();//from  ww  w. j a  va2  s .c o  m
    }
    FragmentManager mgr = this.getFragmentManager();
    if (currentFragment != null) {
        Fragment fragment = mgr.findFragmentByTag(currentFragment.name());
        if (fragment instanceof DatabaseConnectionListener) {
            ((DatabaseConnectionListener) fragment).databaseAvailable();
        }
    }
    if (mIOdkDataDatabaseListener != null) {
        mIOdkDataDatabaseListener.databaseAvailable();
    }
}

From source file:org.opendatakit.tables.activities.TableDisplayActivity.java

/**
 * Show the spreadsheet fragment.// ww  w .j  a va  2  s  .c  om
 * 
 * @param createNew
 */
public void showSpreadsheetFragment(boolean createNew) {
    this.setCurrentFragmentType(ViewFragmentType.SPREADSHEET);
    this.updateChildViewVisibility(ViewFragmentType.SPREADSHEET);
    FragmentManager fragmentManager = this.getFragmentManager();
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
    // Hide all the other fragments.
    this.hideAllOtherViewFragments(ViewFragmentType.SPREADSHEET, fragmentTransaction);
    // Try to retrieve one already there.
    SpreadsheetFragment spreadsheetFragment = (SpreadsheetFragment) fragmentManager
            .findFragmentByTag(Constants.FragmentTags.SPREADSHEET);
    if (spreadsheetFragment == null) {
        WebLogger.getLogger(getAppName()).d(TAG,
                "[showSpreadsheetFragment] no existing spreadshseet " + "fragment found");
    } else {
        WebLogger.getLogger(getAppName()).d(TAG,
                "[showSpreadsheetFragment] existing spreadsheet fragment " + "found");
    }
    WebLogger.getLogger(getAppName()).d(TAG, "[showSpreadsheetFragment] createNew is: " + createNew);
    if (spreadsheetFragment == null || createNew) {
        if (spreadsheetFragment != null) {
            WebLogger.getLogger(getAppName()).d(TAG, "[showSpreadsheetFragment] removing existing fragment");
            // Get rid of the existing fragment
            fragmentTransaction.remove(spreadsheetFragment);
        }
        spreadsheetFragment = this.createSpreadsheetFragment();
        fragmentTransaction.add(R.id.activity_table_display_activity_one_pane_content, spreadsheetFragment,
                Constants.FragmentTags.SPREADSHEET);
    } else {
        fragmentTransaction.show(spreadsheetFragment);
    }
    fragmentTransaction.commit();
}

From source file:com.adafruit.bluefruit.le.connect.app.MainActivity.java

private void restoreRetainedDataFragment() {
    // find the retained fragment
    FragmentManager fm = getFragmentManager();
    mRetainedDataFragment = (DataFragment) fm.findFragmentByTag(TAG);

    if (mRetainedDataFragment == null) {
        // Create
        mRetainedDataFragment = new DataFragment();
        fm.beginTransaction().add(mRetainedDataFragment, TAG).commitAllowingStateLoss(); // http://stackoverflow.com/questions/7575921/illegalstateexception-can-not-perform-this-action-after-onsaveinstancestate-h

        mScannedDevices = new ArrayList<>();
        // mPeripheralList = new PeripheralList();

    } else {//from   w ww.  j a  va2 s.  c  o  m
        // Restore status
        mScannedDevices = mRetainedDataFragment.mScannedDevices;
        mComponentToStartWhenConnected = mRetainedDataFragment.mComponentToStartWhenConnected;
        mShouldEnableWifiOnQuit = mRetainedDataFragment.mShouldEnableWifiOnQuit;
        mFirmwareUpdater = mRetainedDataFragment.mFirmwareUpdater;
        mLatestCheckedDeviceAddress = mRetainedDataFragment.mLatestCheckedDeviceAddress;
        mSelectedDeviceData = mRetainedDataFragment.mSelectedDeviceData;
        //mPeripheralList = mRetainedDataFragment.mPeripheralList;

        if (mFirmwareUpdater != null) {
            mFirmwareUpdater.changedParentActivity(this); // set the new activity
        }
    }
}

From source file:org.opendatakit.survey.activities.MainMenuActivity.java

public void swapToFragmentView(ScreenList newScreenType) {
    WebLogger.getLogger(getAppName()).i(t, "swapToFragmentView: " + newScreenType.name());
    FragmentManager mgr = getFragmentManager();
    FragmentTransaction trans = null;//w ww  .j a va  2s.c  om
    Fragment newFragment = null;
    if (newScreenType == ScreenList.MAIN_SCREEN) {
        throw new IllegalStateException("unexpected reference to generic main screen");
    } else if (newScreenType == ScreenList.FORM_CHOOSER) {
        newFragment = mgr.findFragmentByTag(newScreenType.name());
        if (newFragment == null) {
            newFragment = new FormChooserListFragment();
        }
    } else if (newScreenType == ScreenList.FRONT_PAGE) {
        newFragment = mgr.findFragmentByTag(newScreenType.name());
        if (newFragment == null) {
            newFragment = new FrontPageFragment();
        }
    } else if (newScreenType == ScreenList.INITIALIZATION_DIALOG) {
        newFragment = mgr.findFragmentByTag(newScreenType.name());
        if (newFragment == null) {
            newFragment = new InitializationFragment();
        }
    } else if (newScreenType == ScreenList.WEBKIT) {
        newFragment = mgr.findFragmentByTag(newScreenType.name());
        if (newFragment == null) {
            WebLogger.getLogger(getAppName()).i(t,
                    "[" + this.hashCode() + "] creating new webkit fragment " + newScreenType.name());
            newFragment = new WebViewFragment();
        }
    } else if (newScreenType == ScreenList.ABOUT_MENU) {
        newFragment = mgr.findFragmentByTag(newScreenType.name());
        if (newFragment == null) {
            newFragment = new AboutMenuFragment();
        }

    } else {
        throw new IllegalStateException("Unrecognized ScreenList type");
    }

    boolean matchingBackStackEntry = false;
    for (int i = 0; i < mgr.getBackStackEntryCount(); ++i) {
        BackStackEntry e = mgr.getBackStackEntryAt(i);
        WebLogger.getLogger(getAppName()).i(t, "BackStackEntry[" + i + "] " + e.getName());
        if (e.getName().equals(newScreenType.name())) {
            matchingBackStackEntry = true;
        }
    }

    if (matchingBackStackEntry) {
        if (trans != null) {
            WebLogger.getLogger(getAppName()).e(t, "Unexpected active transaction when popping state!");
            trans = null;
        }
        // flush backward, to the screen we want to go back to
        currentFragment = newScreenType;
        WebLogger.getLogger(getAppName()).e(t,
                "[" + this.hashCode() + "] popping back stack " + currentFragment.name());
        mgr.popBackStackImmediate(currentFragment.name(), 0);
    } else {
        // add transaction to show the screen we want
        if (trans == null) {
            trans = mgr.beginTransaction();
        }
        currentFragment = newScreenType;
        trans.replace(R.id.main_content, newFragment, currentFragment.name());
        WebLogger.getLogger(getAppName()).i(t,
                "[" + this.hashCode() + "] adding to back stack " + currentFragment.name());
        trans.addToBackStack(currentFragment.name());
    }

    // and see if we should re-initialize...
    if ((currentFragment != ScreenList.INITIALIZATION_DIALOG)
            && ((Survey) getApplication()).shouldRunInitializationTask(getAppName())) {
        WebLogger.getLogger(getAppName()).i(t, "swapToFragmentView -- calling clearRunInitializationTask");
        // and immediately clear the should-run flag...
        ((Survey) getApplication()).clearRunInitializationTask(getAppName());
        // OK we should swap to the InitializationFragment view
        // this will skip the transition to whatever screen we were trying to 
        // go to and will instead show the InitializationFragment view. We
        // restore to the desired screen via the setFragmentToShowNext()
        //
        // NOTE: this discards the uncommitted transaction.
        // Robolectric complains about a recursive state transition.
        if (trans != null) {
            trans.commit();
        }
        swapToFragmentView(ScreenList.INITIALIZATION_DIALOG);
    } else {
        // before we actually switch to a WebKit, be sure
        // we have the form definition for it...
        if (currentFragment == ScreenList.WEBKIT && getCurrentForm() == null) {
            // we were sent off to the initialization dialog to try to
            // discover the form. We need to inquire about the form again
            // and, if we cannot find it, report an error to the user.
            final Uri uriFormsProvider = FormsProviderAPI.CONTENT_URI;
            Uri uri = getIntent().getData();
            Uri formUri = null;

            if (uri.getScheme().equalsIgnoreCase(uriFormsProvider.getScheme())
                    && uri.getAuthority().equalsIgnoreCase(uriFormsProvider.getAuthority())) {
                List<String> segments = uri.getPathSegments();
                if (segments != null && segments.size() >= 2) {
                    String appName = segments.get(0);
                    setAppName(appName);
                    String tableId = segments.get(1);
                    String formId = (segments.size() > 2) ? segments.get(2) : null;
                    formUri = Uri.withAppendedPath(Uri.withAppendedPath(
                            Uri.withAppendedPath(FormsProviderAPI.CONTENT_URI, appName), tableId), formId);
                } else {
                    swapToFragmentView(ScreenList.FRONT_PAGE);
                    createErrorDialog(getString(R.string.invalid_uri_expecting_n_segments, uri.toString(), 2),
                            EXIT);
                    return;
                }
                // request specifies a specific formUri -- try to open that
                FormIdStruct newForm = FormIdStruct.retrieveFormIdStruct(getContentResolver(), formUri);
                if (newForm == null) {
                    // error
                    swapToFragmentView(ScreenList.FRONT_PAGE);
                    createErrorDialog(getString(R.string.form_not_found, segments.get(1)), EXIT);
                    return;
                } else {
                    transitionToFormHelper(uri, newForm);
                }
            }
        }

        if (trans != null) {
            trans.commit();
        }
        invalidateOptionsMenu();
    }
}

From source file:org.opendatakit.tables.activities.TableDisplayActivity.java

public void showDetailFragment(boolean createNew) {
    this.setCurrentFragmentType(ViewFragmentType.DETAIL);
    this.updateChildViewVisibility(ViewFragmentType.DETAIL);
    FragmentManager fragmentManager = this.getFragmentManager();
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
    this.hideAllOtherViewFragments(ViewFragmentType.DETAIL, fragmentTransaction);
    String fileName = IntentUtil.retrieveFileNameFromBundle(this.getIntent().getExtras());
    // Try and use the default.
    if (fileName == null) {
        WebLogger.getLogger(getAppName()).d(TAG, "[showDetailFragment] fileName not found in Intent");
        SQLiteDatabase db = null;/*from w  w w  . j  a v  a2 s . c  om*/
        try {
            db = DatabaseFactory.get().getDatabase(this, getAppName());
            fileName = TableUtil.get().getDetailViewFilename(db, getTableId());
        } finally {
            if (db != null) {
                db.close();
            }
        }
    }
    String rowId = IntentUtil.retrieveRowIdFromBundle(this.getIntent().getExtras());
    // Try to retrieve one that already exists.
    DetailViewFragment detailViewFragment = (DetailViewFragment) fragmentManager
            .findFragmentByTag(Constants.FragmentTags.DETAIL_FRAGMENT);
    if (detailViewFragment == null || createNew) {
        if (detailViewFragment != null) {
            WebLogger.getLogger(getAppName()).d(TAG,
                    "[showDetailViewFragment] removing old detail view fragment");
            fragmentTransaction.remove(detailViewFragment);
        } else {
            WebLogger.getLogger(getAppName()).d(TAG,
                    "[showDetailViewFragment] no existing detail view fragment found");
        }
        detailViewFragment = this.createDetailViewFragment(fileName, rowId);

        fragmentTransaction.add(R.id.activity_table_display_activity_one_pane_content, detailViewFragment,
                Constants.FragmentTags.DETAIL_FRAGMENT);
    } else {
        WebLogger.getLogger(getAppName()).d(TAG,
                "[showDetailViewFragment] existing detail view fragment found");
        fragmentTransaction.show(detailViewFragment);
    }

    fragmentTransaction.commit();
}

From source file:com.android.contacts.activities.PeopleActivity.java

private void createViewsAndFragments(Bundle savedState) {
    // Disable the ActionBar so that we can use a Toolbar. This needs to be called before
    // setContentView().
    getWindow().requestFeature(Window.FEATURE_NO_TITLE);

    setContentView(R.layout.people_activity);

    final FragmentManager fragmentManager = getFragmentManager();

    // Hide all tabs (the current tab will later be reshown once a tab is selected)
    final FragmentTransaction transaction = fragmentManager.beginTransaction();

    mTabTitles = new String[TabState.COUNT];
    mTabTitles[TabState.FAVORITES] = getString(R.string.favorites_tab_label);
    mTabTitles[TabState.ALL] = getString(R.string.all_contacts_tab_label);
    mTabPager = getView(R.id.tab_pager);
    mTabPagerAdapter = new TabPagerAdapter();
    mTabPager.setAdapter(mTabPagerAdapter);
    mTabPager.setOnPageChangeListener(mTabPagerListener);

    // Configure toolbar and toolbar tabs. If in landscape mode, we  configure tabs differntly.
    final Toolbar toolbar = getView(R.id.toolbar);
    setActionBar(toolbar);/*from w w  w . java2  s . c  om*/
    final ViewPagerTabs portraitViewPagerTabs = (ViewPagerTabs) findViewById(R.id.lists_pager_header);
    ViewPagerTabs landscapeViewPagerTabs = null;
    if (portraitViewPagerTabs == null) {
        landscapeViewPagerTabs = (ViewPagerTabs) getLayoutInflater()
                .inflate(R.layout.people_activity_tabs_lands, toolbar, /* attachToRoot = */ false);
        mViewPagerTabs = landscapeViewPagerTabs;
    } else {
        mViewPagerTabs = portraitViewPagerTabs;
    }
    mViewPagerTabs.setViewPager(mTabPager);

    final String FAVORITE_TAG = "tab-pager-favorite";
    final String ALL_TAG = "tab-pager-all";

    // Create the fragments and add as children of the view pager.
    // The pager adapter will only change the visibility; it'll never create/destroy
    // fragments.
    // However, if it's after screen rotation, the fragments have been re-created by
    // the fragment manager, so first see if there're already the target fragments
    // existing.
    mFavoritesFragment = (ContactTileListFragment) fragmentManager.findFragmentByTag(FAVORITE_TAG);
    mAllFragment = (MultiSelectContactsListFragment) fragmentManager.findFragmentByTag(ALL_TAG);

    if (mFavoritesFragment == null) {
        mFavoritesFragment = new ContactTileListFragment();
        mAllFragment = new MultiSelectContactsListFragment();

        transaction.add(R.id.tab_pager, mFavoritesFragment, FAVORITE_TAG);
        transaction.add(R.id.tab_pager, mAllFragment, ALL_TAG);
    }

    mFavoritesFragment.setListener(mFavoritesFragmentListener);

    mAllFragment.setOnContactListActionListener(new ContactBrowserActionListener());
    mAllFragment.setCheckBoxListListener(new CheckBoxListListener());

    // Hide all fragments for now.  We adjust visibility when we get onSelectedTabChanged()
    // from ActionBarAdapter.
    transaction.hide(mFavoritesFragment);
    transaction.hide(mAllFragment);

    transaction.commitAllowingStateLoss();
    fragmentManager.executePendingTransactions();

    // Setting Properties after fragment is created
    mFavoritesFragment.setDisplayType(DisplayType.STREQUENT);

    mActionBarAdapter = new ActionBarAdapter(this, this, getActionBar(), portraitViewPagerTabs,
            landscapeViewPagerTabs, toolbar);
    mActionBarAdapter.initialize(savedState, mRequest);

    // Add shadow under toolbar
    ViewUtil.addRectangularOutlineProvider(findViewById(R.id.toolbar_parent), getResources());

    // Configure floating action button
    mFloatingActionButtonContainer = findViewById(R.id.floating_action_button_container);
    final ImageButton floatingActionButton = (ImageButton) findViewById(R.id.floating_action_button);
    floatingActionButton.setOnClickListener(this);
    mFloatingActionButtonController = new FloatingActionButtonController(this, mFloatingActionButtonContainer,
            floatingActionButton);
    initializeFabVisibility();

    invalidateOptionsMenuIfNeeded();
}

From source file:com.lgallardo.youtorrentcontroller.RefreshListener.java

private void selectItem(int position) {

    if (findViewById(R.id.one_frame) != null) {
        FragmentManager fragmentManager = getFragmentManager();

        if (fragmentManager.findFragmentByTag(
                "firstFragment") instanceof com.lgallardo.youtorrentcontroller.TorrentDetailsFragment) {
            // Reset back button stack
            for (int i = 0; i < fragmentManager.getBackStackEntryCount(); ++i) {
                fragmentManager.popBackStack();
            }//from   w  w w . j a v  a  2  s.  c  o  m
        }

    }

    //        switch (position-1) {
    //            case 0:
    //                // Set the refresh layout (refresh icon, etc)
    //                refreshSwipeLayout();
    //                refresh("all");
    //                saveLastState("all");
    //                break;
    //            case 1:
    //                // Set the refresh layout (refresh icon, etc)
    //                refreshSwipeLayout();
    //                refresh("downloading");
    //                saveLastState("downloading");
    //                break;
    //            case 2:
    //                // Set the refresh layout (refresh icon, etc)
    //                refreshSwipeLayout();
    //                refresh("completed");
    //                saveLastState("completed");
    //                break;
    //            case 3:
    //                // Set the refresh layout (refresh icon, etc)
    //                refreshSwipeLayout();
    //                refresh("pause");
    //                saveLastState("pause");
    //                break;
    //            case 4:
    //                // Set the refresh layout (refresh icon, etc)
    //                refreshSwipeLayout();
    //                refresh("active");
    //                saveLastState("active");
    //                break;
    //            case 5:
    //                // Set the refresh layout (refresh icon, etc)
    //                refreshSwipeLayout();
    //                refresh("inactive");
    //                saveLastState("inactive");
    //                break;
    //            case 6:
    ////TODO: Uncomment to add options, and +1 to each case
    ////                // Options - Execute the task in background
    ////                Toast.makeText(getApplicationContext(), R.string.getQBittorrentPrefefrences, Toast.LENGTH_SHORT).show();
    ////                qBittorrentOptions qso = new qBittorrentOptions();
    ////                qso.execute(new String[]{qbQueryString + "/preferences", "setOptions"});
    ////                break;
    ////            case 7:
    //                // Settings
    //                openSettings();
    //                break;
    //            case 7:
    //                if (packageName.equals("com.lgallardo.youtorrentcontroller")) {
    //                    // Get Pro version
    //                    getPRO();
    //                }else {
    //                    openHelp();
    //                }
    //                break;
    //            case 8:
    //                openHelp();
    //                break;
    //            default:
    //                break;
    //
    //        }
    //
    //        if (position < 6) {
    //            // Set checked item
    ////            drawerList.setItemChecked(position, true);
    ////            drawerList.setSelection(position);
    //            mRecyclerView.findViewHolderForAdapterPosition(position+1).itemView.performClick();
    //            setTitle(navigationDrawerItemTitles[position]);
    //        }else{
    //            // Set current selection
    //            saveLastState(currentState);
    //            setSelectionAndTitle(currentState);
    //        }x
    //
    ////        drawerLayout.closeDrawer(drawerList);
    //        drawerLayout.closeDrawer(mRecyclerView);
    //
    //        // Load banner
    //        loadBanner();

}

From source file:com.lgallardo.youtorrentcontroller.RefreshListener.java

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // Get preferences
    getSettings();/*  www .j  a v  a  2  s.  c  om*/

    // Set alarm for checking completed torrents, if not set
    if (PendingIntent.getBroadcast(getApplication(), 0, new Intent(getApplication(), NotifierService.class),
            PendingIntent.FLAG_NO_CREATE) == null) {

        // Set Alarm for checking completed torrents
        alarmMgr = (AlarmManager) getApplication().getSystemService(Context.ALARM_SERVICE);
        Intent intent = new Intent(getApplication(), NotifierService.class);
        alarmIntent = PendingIntent.getBroadcast(getApplication(), 0, intent, 0);

        alarmMgr.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() + 5000,
                notification_period, alarmIntent);
    }

    // Set alarm for RSS checking, if not set
    if (PendingIntent.getBroadcast(getApplication(), 0, new Intent(getApplication(), RSSService.class),
            PendingIntent.FLAG_NO_CREATE) == null) {

        // Set Alarm for checking completed torrents
        alarmMgr = (AlarmManager) getApplication().getSystemService(Context.ALARM_SERVICE);
        Intent intent = new Intent(getApplication(), RSSService.class);
        alarmIntent = PendingIntent.getBroadcast(getApplication(), 0, intent, 0);

        alarmMgr.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() + 5000,
                AlarmManager.INTERVAL_DAY, alarmIntent);
    }

    // Set Theme (It must be fore inflating or setContentView)
    if (dark_ui) {
        this.setTheme(R.style.Theme_Dark);

        if (Build.VERSION.SDK_INT >= 21) {
            getWindow().setNavigationBarColor(getResources().getColor(R.color.Theme_Dark_toolbarBackground));
            getWindow().setStatusBarColor(getResources().getColor(R.color.Theme_Dark_toolbarBackground));
        }
    } else {
        this.setTheme(R.style.Theme_Light);

        if (Build.VERSION.SDK_INT >= 21) {
            getWindow().setNavigationBarColor(getResources().getColor(R.color.primary));
        }

    }

    setContentView(R.layout.activity_main);

    toolbar = (Toolbar) findViewById(R.id.app_bar);

    if (dark_ui) {
        toolbar.setBackgroundColor(getResources().getColor(R.color.Theme_Dark_primary));
    }

    setSupportActionBar(toolbar);

    // Set App title
    setTitle(R.string.app_shortname);

    // Drawer menu
    navigationDrawerServerItems = getResources().getStringArray(R.array.qBittorrentServers);
    navigationDrawerItemTitles = getResources().getStringArray(R.array.navigation_drawer_items_array);

    drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);

    //        drawerList = (ListView) findViewById(R.id.left_drawer);

    mRecyclerView = (RecyclerView) findViewById(R.id.RecyclerView); // Assigning the RecyclerView Object to the xml View
    mRecyclerView.setHasFixedSize(true); // Letting the system know that the list objects are

    ArrayList<ObjectDrawerItem> serverItems = new ArrayList<ObjectDrawerItem>();
    ArrayList<ObjectDrawerItem> actionItems = new ArrayList<ObjectDrawerItem>();
    ArrayList<ObjectDrawerItem> settingsItems = new ArrayList<ObjectDrawerItem>();

    // Add server category
    serverItems.add(new ObjectDrawerItem(R.drawable.ic_drawer_servers,
            getResources().getString(R.string.drawer_servers_category), DRAWER_CATEGORY, false, null));

    // Server items
    int currentServerValue = 1;

    try {
        currentServerValue = Integer.parseInt(MainActivity.currentServer);
    } catch (NumberFormatException e) {

    }

    for (int i = 0; i < navigationDrawerServerItems.length; i++) {
        //            Log.d("Debug", "MainActivity - currentServerValue - currentServerValue: " + currentServerValue);
        //            Log.d("Debug", "MainActivity - currentServerValue - (i + 1): " + (i + 1));
        //            Log.d("Debug", "MainActivity - currentServerValue - (i + 1) == currentServerValue: " + ((i + 1) == currentServerValue));

        serverItems.add(new ObjectDrawerItem(R.drawable.ic_drawer_subitem, navigationDrawerServerItems[i],
                DRAWER_ITEM_SERVERS, ((i + 1) == currentServerValue), "changeCurrentServer"));

    }

    //
    //        serverItems.add(new ObjectDrawerItem(R.drawable.ic_drawer_subitem, "Server 1", DRAWER_ITEM_SERVERS, true, "changeCurrentServer"));
    //        serverItems.add(new ObjectDrawerItem(R.drawable.ic_drawer_subitem, "Server 2", DRAWER_ITEM_SERVERS, false, "changeCurrentServer"));
    //        serverItems.add(new ObjectDrawerItem(R.drawable.ic_drawer_subitem, "Server 3", DRAWER_ITEM_SERVERS, false, "changeCurrentServer"));

    // Add actions
    actionItems.add(new ObjectDrawerItem(R.drawable.ic_drawer_all, navigationDrawerItemTitles[0],
            DRAWER_ITEM_ACTIONS, lastState.equals("all"), "refreshAll"));
    actionItems.add(new ObjectDrawerItem(R.drawable.ic_drawer_downloading, navigationDrawerItemTitles[1],
            DRAWER_ITEM_ACTIONS, lastState.equals("downloading"), "refreshDownloading"));
    actionItems.add(new ObjectDrawerItem(R.drawable.ic_drawer_completed, navigationDrawerItemTitles[2],
            DRAWER_ITEM_ACTIONS, lastState.equals("completed"), "refreshCompleted"));
    actionItems.add(new ObjectDrawerItem(R.drawable.ic_drawer_paused, navigationDrawerItemTitles[3],
            DRAWER_ITEM_ACTIONS, lastState.equals("pause"), "refreshPaused"));
    actionItems.add(new ObjectDrawerItem(R.drawable.ic_drawer_active, navigationDrawerItemTitles[4],
            DRAWER_ITEM_ACTIONS, lastState.equals("active"), "refreshActive"));
    actionItems.add(new ObjectDrawerItem(R.drawable.ic_drawer_inactive, navigationDrawerItemTitles[5],
            DRAWER_ITEM_ACTIONS, lastState.equals("inactive"), "refreshInactive"));

    // Add settings actions
    //        drawerItems.add(new ObjectDrawerItem(R.drawable.ic_action_options, navigationDrawerItemTitles[6], DRAWER_ITEM_ACTIONS, false, "openOptions"));
    settingsItems.add(new ObjectDrawerItem(R.drawable.ic_drawer_settings, navigationDrawerItemTitles[6],
            DRAWER_ITEM_ACTIONS, false, "openSettings"));
    if (packageName.equals("com.lgallardo.youtorrentcontroller")) {
        settingsItems.add(new ObjectDrawerItem(R.drawable.ic_drawer_pro, navigationDrawerItemTitles[7],
                DRAWER_ITEM_ACTIONS, false, "getPro"));
        settingsItems.add(new ObjectDrawerItem(R.drawable.ic_drawer_help, navigationDrawerItemTitles[8],
                DRAWER_ITEM_ACTIONS, false, "openHelp"));
    } else {
        settingsItems.add(new ObjectDrawerItem(R.drawable.ic_drawer_help, navigationDrawerItemTitles[7],
                DRAWER_ITEM_ACTIONS, false, "openHelp"));
    }

    // Set adapter

    rAdapter = new DrawerItemRecyclerViewAdapter(getApplicationContext(), this, serverItems, actionItems,
            settingsItems, null);
    rAdapter.notifyDataSetChanged();

    //        Log.d("Debug", "MainActivity - oldActionPosition: "+ (Arrays.asList(actionStates).indexOf(lastState)));

    //        drawerList.setAdapter(adapter);
    mRecyclerView.setAdapter(rAdapter);

    mLayoutManager = new LinearLayoutManager(this); // Creating a layout Manager
    mRecyclerView.setLayoutManager(mLayoutManager); // Setting the layout Manager

    // Set selection according to last state
    setSelectionAndTitle(lastState);

    // Set the item click listener
    //        drawerList.setOnItemClickListener(new DrawerItemClickListener());

    // Get drawer title
    title = drawerTitle = getTitle();

    // Add the application icon control code inside MainActivity onCreate

    drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);

    // New ActionBarDrawerToggle for Google Material Desing (v7)
    drawerToggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.drawer_open,
            R.string.drawer_close) {

        /**
         * Called when a drawer has settled in a completely closed state.
         */
        public void onDrawerClosed(View view) {
            super.onDrawerClosed(view);
            // getSupportActionBar().setTitle(title);
        }

        /**
         * Called when a drawer has settled in a completely open state.
         */
        public void onDrawerOpened(View drawerView) {
            super.onDrawerOpened(drawerView);
            // getSupportActionBar().setTitle(drawerTitle);
            // setTitle(R.string.app_shortname);
        }
    };

    drawerLayout.setDrawerListener(drawerToggle);
    //        drawerToggle.syncState();               // Finally we set the drawer toggle sync State

    getSupportActionBar().setDisplayHomeAsUpEnabled(false);
    getSupportActionBar().setHomeButtonEnabled(false);

    // Get options and save them as shared preferences
    //        qBittorrentOptions qso = new qBittorrentOptions();
    //        qso.execute(new String[]{qbQueryString + "/preferences", "getSettings"});

    // If it were awaked from an intent-filter,
    // Get token and cookie and then
    // get intent from the intent filter and Add URL torrent
    //        Log.d("Debug", "MainActivity - 1");
    new torrentTokenByIntent().execute(getIntent());

    // Fragments

    // Check whether the activity is using the layout version with
    // the fragment_container FrameLayout. If so, we must add the first
    // fragment
    if (findViewById(R.id.fragment_container) != null) {

        // However, if we're being restored from a previous state,
        // then we don't need to do anything and should return or else
        // we could end up with overlapping fragments.
        // if (savedInstanceState != null) {
        // return;
        // }

        // This fragment will hold the list of torrents
        if (firstFragment == null) {
            firstFragment = new com.lgallardo.youtorrentcontroller.ItemstFragment();
        }

        // This fragment will hold the list of torrents
        helpTabletFragment = new HelpFragment();

        // Set the second fragments container
        firstFragment.setSecondFragmentContainer(R.id.content_frame);

        // This i the second fragment, holding a default message at the
        // beginning
        secondFragment = new AboutFragment();

        // Add the fragment to the 'list_frame' FrameLayout
        FragmentManager fragmentManager = getFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();

        if (fragmentManager.findFragmentByTag("firstFragment") == null) {
            fragmentTransaction.add(R.id.list_frame, helpTabletFragment, "firstFragment");
        } else {
            fragmentTransaction.replace(R.id.list_frame, helpTabletFragment, "firstFragment");
        }

        if (fragmentManager.findFragmentByTag("secondFragment") == null) {
            fragmentTransaction.add(R.id.content_frame, secondFragment, "secondFragment");
        } else {
            fragmentTransaction.replace(R.id.content_frame, secondFragment, "secondFragment");
        }

        fragmentTransaction.commit();

        // Second fragment will be added in ItemsFRagment's onListItemClick
        // method

    } else {

        // Phones handle just one fragment

        // Create an instance of ItemsFragments
        if (firstFragment == null) {
            firstFragment = new com.lgallardo.youtorrentcontroller.ItemstFragment();
        }
        firstFragment.setSecondFragmentContainer(R.id.one_frame);

        // This is the about fragment, holding a default message at the
        // beginning
        secondFragment = new AboutFragment();

        // If we're being restored from a previous state,
        // then we don't need to do anything and should return or else
        // we could end up with overlapping fragments.
        //            if (savedInstanceState != null) {
        //
        //                // Handle Item list empty due to Fragment stack
        //                try {
        //                    FragmentManager fm = getFragmentManager();
        //
        //                    if (fm.getBackStackEntryCount() == 1 && fm.findFragmentById(R.id.one_frame) instanceof com.lgallardo.youtorrentcontroller.TorrentDetailsFragment) {
        //
        //                        refreshCurrent();
        //
        //                    }
        //                }
        //                catch (Exception e) {
        //                }
        //
        //                return;
        //            }

        // Add the fragment to the 'list_frame' FrameLayout
        FragmentManager fragmentManager = getFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();

        if (fragmentManager.findFragmentByTag("firstFragment") == null) {
            fragmentTransaction.add(R.id.one_frame, secondFragment, "firstFragment");
        } else {
            fragmentTransaction.replace(R.id.one_frame, secondFragment, "firstFragment");
        }

        // if torrent details was loaded reset back button stack
        for (int i = 0; i < fragmentManager.getBackStackEntryCount(); ++i) {
            fragmentManager.popBackStack();
        }

        fragmentTransaction.commit();
    }

    // Activity is visible
    activityIsVisible = true;

    // First refresh
    refreshCurrent();

    handler = new Handler();
    handler.postDelayed(m_Runnable, refresh_period);

    // Load banner
    loadBanner();

}