Kuldeep Kumar
Kuldeep Kumar

Reputation: 925

Action Bar Drawer Toggle Button not getting displayed for the second activity

I have following two activities in my android app:

1) LevelSelectActivity (activity_level_select.xml)

2) OptionsQuizActivity (activity_options_quiz.xml)

1st activity calls 2nd activity. I have navigation drawer set for both activities with a custom Action Bar layout.

What I want:

A transparent action bar for both activities with Navigation Bar Drawer Toggle button. Action Bar should overlay the layout below. Only the Toggle button should be visible on the action bar.

What's working:

Activity 1 is displaying the action bar correctly with the transparent background overlaying the below layout and the Toggle button as well. So everything is working as expected for Activity 1.

What's not working:

Activity 2 is not showing Action Bar and the fun part is I am using the same exact java code, action bar layouts and styles for both the activities. Can anyone please check my code and figure out what's wrong ? I am pulling my hairs over hair..

Activity 1 Layout File : activity_level_select.xml:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/drawer_layout_level"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="0dp"
    android:paddingLeft="0dp"
    android:paddingRight="0dp"
    android:paddingTop="0dp"
    android:background="#4285f4"
    tools:context=".ui.LevelSelectActivity"
    android:fitsSystemWindows="true"
    >

    <include
        layout="@layout/custom_navigation_bar"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <LinearLayout
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingLeft="35dp"
            android:paddingRight="35dp"
            android:gravity="center"
            android:layout_centerHorizontal="true"
            android:layout_alignParentTop="true"
            android:layout_above="@+id/linearLayout">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="0dp"
                android:layout_weight="1"
                android:textSize="31sp"
                android:layout_marginTop="80dp"
                android:text="@string/level_heading"
                android:textColor="#ffffff"
                android:id="@+id/diffiLevelTextView"
                android:fontFamily="sans-serif-light"/>

            <Button
                android:layout_width="match_parent"
                android:layout_height="60dp"
                android:background="@drawable/semi_white_button"
                android:text="@string/button_level_medium"
                android:fontFamily="sans-serif-light"
                android:textSize="22sp"
                android:textAllCaps="false"
                android:textColor="#ffffff"
                android:layout_marginBottom="40dp"
                android:id="@+id/buttonLevelMedium" />




        </LinearLayout>


        <LinearLayout
            android:layout_height="20dp"
            android:layout_width="match_parent"
            android:orientation="horizontal"
            android:layout_alignParentBottom="true"
            android:layout_alignParentLeft="true"
            android:layout_marginBottom="20dp"
            android:layout_alignParentStart="true"
            android:id="@+id/linearLayout">

            <TextView
                android:layout_width="0dp"
                android:id="@+id/tv_rate"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:gravity="center"
                android:textColor="#88ffffff"
                android:textSize="17dp"
                android:text="@string/rate_text"/>


        </LinearLayout>
    </RelativeLayout>

    <android.support.design.widget.NavigationView
        android:id="@+id/nav_view_level"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:fitsSystemWindows="true"
        app:headerLayout="@layout/nav_header_main"
        app:menu="@menu/activity_main_drawer"/>

</android.support.v4.widget.DrawerLayout>

Activity 1 LevelSelectActivity Java Code : calling prepareActionBar method from onCreate method of the activity

private void prepareActionBar(){
        // Declaring and Setting our custom build navigation bar
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        //Setting Transparent Color for Action Bar
        ActionBar actionBar = getSupportActionBar();
        actionBar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#00000000")));
        actionBar.setTitle("");


        //Creating and preparing the Navigation Drawer button
        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout_level);
        ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
                this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
        drawer.setDrawerListener(toggle);
        toggle.syncState();


        //Setting Navigation Item Listeners
        NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view_level);
        navigationView.setNavigationItemSelectedListener(this);      
    }

Activity 1 ScreenShot : Transparent action bar is displayed along with the Action bar toggle button.

enter image description here

Activity 2 Layout File : activity_options_quiz.xml:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:ads="http://schemas.android.com/apk/res-auto"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="0dp"
    android:paddingLeft="0dp"
    android:paddingRight="0dp"
    android:paddingTop="0dp"
    android:background="#4285f4"
    android:id="@+id/drawer_layout_quiz"
    tools:context=".ui.OptionsQuizActivity"
    android:fitsSystemWindows="true">

    <include
        layout="@layout/custom_navigation_bar"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

    <RelativeLayout
        android:id="@+id/mainLayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="170dp"
                android:background="#33000000"
                android:id="@+id/darkQuestionBack"
                android:gravity="center">

                <TextView
                    android:id="@+id/qusTextView"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="@string/test_question"
                    android:paddingLeft="40dp"
                    android:paddingRight="40dp"
                    android:textColor="#aaffffff"
                    android:fontFamily="sans-serif-light"
                    android:textSize="30sp"/>
            </LinearLayout>

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_weight="1"
                android:orientation="vertical"
                android:gravity="center"
                android:layout_height="0dp"
                android:paddingLeft="40dp"
                android:paddingRight="40dp">


                <Button
                    android:layout_width="match_parent"
                    android:layout_height="60dp"
                    android:text="Option One"
                    android:textColor="#ffffff"
                    android:id="@+id/optionButton0"
                    android:background="@drawable/semi_white_button"
                    android:textSize="24sp"
                    android:textAllCaps="false"
                    android:layout_marginBottom="15dp"
                    android:fontFamily="sans-serif-light" />

                <Button
                    android:layout_width="match_parent"
                    android:layout_height="60dp"
                    android:text="Option Two"
                    android:textColor="#ffffff"
                    android:id="@+id/optionButton1"
                    android:background="@drawable/semi_white_button"
                    android:textSize="24sp"
                    android:layout_marginBottom="15dp"
                    android:textAllCaps="false"
                    android:fontFamily="sans-serif-light" />

                <Button
                    android:layout_width="match_parent"
                    android:layout_height="60dp"
                    android:text="Option Three"
                    android:textColor="#ffffff"
                    android:id="@+id/optionButton2"
                    android:background="@drawable/semi_white_button"
                    android:textSize="24sp"
                    android:layout_marginBottom="15dp"
                    android:textAllCaps="false"
                    android:fontFamily="sans-serif-light"/>

                <Button
                    android:layout_width="match_parent"
                    android:layout_height="60dp"
                    android:text="Option Four"
                    android:textColor="#ffffff"
                    android:id="@+id/optionButton3"
                    android:background="@drawable/semi_white_button"
                    android:textSize="24sp"
                    android:layout_marginBottom="15dp"
                    android:textAllCaps="false"
                    android:fontFamily="sans-serif-light"/>


            </LinearLayout>

            <com.google.android.gms.ads.AdView
                android:id="@+id/adView"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                ads:adSize="SMART_BANNER"
                ads:adUnitId="@string/banner_ad_unit_id">
            </com.google.android.gms.ads.AdView>

        </LinearLayout>
    </RelativeLayout>

    <android.support.design.widget.NavigationView
        android:id="@+id/nav_view_quiz"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:fitsSystemWindows="true"
        app:headerLayout="@layout/nav_header_main"
        app:menu="@menu/activity_main_drawer"/>


</android.support.v4.widget.DrawerLayout>

Activity 2 JavaCode : OptionsQuizActivity

private void prepareActionBar(){
        // Declaring and Setting our custom build navigation bar
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        //Setting Transparent Color for Action Bar
        ActionBar actionBar = getSupportActionBar();
        actionBar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#00000000")));


        //Creating and preparing the Navigation Drawer button
        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout_quiz);
        ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
                this, drawer,toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
        drawer.setDrawerListener(toggle);
        toggle.syncState();

        //Setting Navigation Item Listeners
        NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view_quiz);
        navigationView.setNavigationItemSelectedListener(this);

    }

Activity 2 ScreenShot : Action Bar toggle button is not displayed

enter image description here

Custom Action Bar Layout

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true">

    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:elevation="0dp"
        android:background="#00000000"
        android:theme="@style/AppTheme.AppBarOverlay">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="@android:color/transparent"
            app:elevation="0dp"
            app:popupTheme="@style/AppTheme.PopupOverlay"/>



    </android.support.design.widget.AppBarLayout>

</android.support.design.widget.CoordinatorLayout>

Styles.xml

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="android:windowActionBarOverlay">true</item>
        <item name="windowActionBarOverlay">true</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>

    <!-- Themes for Navigation Drawer -->
    <style name="AppTheme.NoActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
        <item name="background">@android:color/transparent</item>

    </style>

    <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
        <item name="windowNoTitle">true</item>
    </style>

    <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light">
        <item name="windowNoTitle">true</item>
    </style>
</resources>

Manifest File

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="sprintingminds.com.countrycapitalquiz">

    <uses-permission android:name="android.permission.INTERNET" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true">

        <activity
            android:name=".ui.LevelSelectActivity"
            android:screenOrientation="portrait"
            android:theme="@style/AppTheme.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <activity
            android:name=".ui.OptionsQuizActivity"
            android:screenOrientation="portrait"
            android:theme="@style/AppTheme.NoActionBar">
        </activity>

        <activity
            android:screenOrientation="portrait"
            android:label="@string/app_name_blank"
            android:name=".ui.IntroController"
            android:theme="@style/NoActionBar"/>
    </application>

</manifest>

Thanks for reading this long question. Help me please :(

UPDATE 1:

Here's some more java code for 2nd Activity

Activity 2:

package sprintingminds.com.countrycapitalquiz.ui;

import android.animation.Animator;
import android.animation.ArgbEvaluator;
import android.animation.ValueAnimator;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.os.Build;
import android.support.design.widget.NavigationView;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import android.view.MenuItem;
import android.view.View;
import android.view.animation.AccelerateInterpolator;
import android.view.animation.DecelerateInterpolator;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;


import java.util.Timer;
import java.util.TimerTask;

public class OptionsQuizActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener{

    private LinearLayout mDarkQuestionBack, mNavBarBack;
    private NavigationView mNavView;
    private View mHeaderView;
    private RelativeLayout mMainLayout;
    private Button mOptionButton0, mOptionButton1, mOptionButton2, mOptionButton3, mGotItButton;
    private String mOption1, mOption2, mOption3, mOption4,mNextQuestion;
    private TextView mQusTextView;
    private QuizGenerator mQuizGenerator;
    private ColorGenerator mColorGenerator;
    private boolean mNextQuestionCounter, mFirstRunCounter;
    private MediaPlayer mMediaCorrect, mMediaWrong;
    private ValueAnimator mBackDarkColorAnimator, mBackLightColorAnimator, mBarColorAnimator ,mQuestionFadeInAnimator, mQuestionFadeOutAnimator;
    private ValueAnimator mButtonFadeOut,mButton1FadeIn, mButton2FadeIn, mButton3FadeIn, mButton4FadeIn;
    private ActionBarDrawerToggle toggle;
    private DrawerLayout drawer;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_options_quiz);


        //Preparing our custom the action bar with Navigation Drawer
        prepareActionBar();


        mNextQuestionCounter = false;
        mFirstRunCounter = true;
        mMediaCorrect = MediaPlayer.create(OptionsQuizActivity.this, R.raw.correct);
        mMediaWrong = MediaPlayer.create(OptionsQuizActivity.this, R.raw.wrong);


        // Initialize Views
        mMainLayout = (RelativeLayout) findViewById(R.id.mainLayout);
        mDarkQuestionBack = (LinearLayout) findViewById(R.id.darkQuestionBack);
        mOptionButton0 = (Button) findViewById(R.id.optionButton0);
        mOptionButton1 = (Button) findViewById(R.id.optionButton1);
        mOptionButton2 = (Button) findViewById(R.id.optionButton2);
        mOptionButton3 = (Button) findViewById(R.id.optionButton3);
        mQusTextView = (TextView) findViewById(R.id.qusTextView);
        mNavView = (NavigationView) findViewById(R.id.nav_view_quiz);
        mHeaderView =  mNavView.getHeaderView(0);
        mNavBarBack = (LinearLayout) mHeaderView.findViewById(R.id.nav_bar_back);


        // Generating New Question and displaying on screen with Random Color
        mQuizGenerator = new QuizGenerator();
        mColorGenerator = new ColorGenerator();
        displayNextQuestion();

        // Giving music control to Volume Rockers
        setVolumeControlStream(AudioManager.STREAM_MUSIC);

        // Initialize Ads
        new Timer().schedule(new TimerTask()
        {
            @Override
            public void run()
            {
                runOnUiThread(new Runnable()
                {
                    @Override
                    public void run()
                    {
                        MobileAds.initialize(getApplicationContext(), "ca-app-pub-9601267183367204/3495012579");
                        AdView mAdView = (AdView) findViewById(R.id.adView);
                        AdRequest adRequest = new AdRequest.Builder().build();
                        mAdView.loadAd(adRequest);
                    }
                });
            }
        }, 1000);


        //Setting On Click Listeners
        mOptionButton0.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View view){
                checkAnswer(0);
            }
        });

        mOptionButton1.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View view){
                checkAnswer(1);
            }
        });

        mOptionButton2.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View view){
                checkAnswer(2);
            }
        });

        mOptionButton3.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View view){
                checkAnswer(3);
            }
        });


        mMainLayout.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View view){
                if (mNextQuestionCounter){
                    mMediaWrong.stop();
                    mMediaCorrect.stop();
                    mMediaWrong.release();
                    mMediaCorrect.release();
                    mMediaWrong = MediaPlayer.create(OptionsQuizActivity.this,R.raw.wrong);
                    mMediaCorrect = MediaPlayer.create(OptionsQuizActivity.this,R.raw.correct);
                    try {
                        mMediaCorrect.prepare();
                        mMediaWrong.prepare();
                    }catch (Exception e){
                        //do something when unable to play sound
                    }
                    displayNextQuestion();
                    toggleButtons(true);
                    toggleButtonState();
                    mNextQuestionCounter=false;
                }
            }
        });

    }



    private void prepareActionBar(){
        // Declaring and Setting our custom build navigation bar
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        //Setting Transparent Color for Action Bar
        ActionBar actionBar = getSupportActionBar();
        actionBar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#00000000")));


        //Creating and preparing the Navigation Drawer button
        drawer = (DrawerLayout) findViewById(R.id.drawer_layout_quiz);
        toggle = new ActionBarDrawerToggle(
                this, drawer,toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
        drawer.setDrawerListener(toggle);
        toggle.syncState();

        //Setting Navigation Item Listeners
        NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view_quiz);
        navigationView.setNavigationItemSelectedListener(this);

    }

    @SuppressWarnings("StatementWithEmptyBody")
    @Override
    public boolean onNavigationItemSelected(MenuItem item) {
        // Handle navigation view item clicks here.
        int id = item.getItemId();

        if (id == R.id.nav_camera) {
            // Handle the camera action
        } else if (id == R.id.nav_gallery) {

        } else if (id == R.id.nav_slideshow) {

        } else if (id == R.id.nav_manage) {

        } else if (id == R.id.nav_share) {

        } else if (id == R.id.nav_send) {

        }

        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout_quiz);
        drawer.closeDrawer(GravityCompat.START);
        return true;
    }
    

}

UPDATE 2:

Just made my action bar black and noticed the entire action bar isn't visible for the second activity. Can anyone please look into the code and figure out what's wrong :(

Upvotes: 0

Views: 43

Answers (0)

Related Questions