0

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 :(

Kuldeep Kumar
  • 905
  • 3
  • 9
  • 22
  • You have used `android:theme="@style/AppTheme.NoActionBar"` so its **NoActionBar** and why you need toggle, use fragments instead – Charuක Mar 05 '17 at 15:18
  • Yes Tashin ... in 2nd activity too.. with the drawer toggle button.. – Kuldeep Kumar Mar 05 '17 at 15:20
  • Charu .. `android:theme="@style/AppTheme.NoActionBar` is used so that I can use a custom action bar layout .. this theme is applied to 1st activity too .. even then action bar is getting displayed for 1st activity .. – Kuldeep Kumar Mar 05 '17 at 15:22
  • yes planning to display different drawers for both activities ... – Kuldeep Kumar Mar 05 '17 at 15:26
  • Tanish ... is it something to do with the fact that I am using same drawer for these two activities ?? – Kuldeep Kumar Mar 05 '17 at 15:27
  • thanks Tanish .. :) – Kuldeep Kumar Mar 05 '17 at 15:32
  • Wait I will update my activity classes – Kuldeep Kumar Mar 05 '17 at 15:43
  • Tahsin .. I now updated the code for 2nd activity class .. but had to omit methods out of code because of the word limit on stackoverflow :( .. tell me if you need additional info. – Kuldeep Kumar Mar 05 '17 at 16:19
  • Why did you add onPostCreated? I've experimented with two activities with two different navigationView and it's working fine. – tahsinRupam Mar 05 '17 at 17:00
  • I was experimenting too with that onPostCreated :P ... I am somewhat new to android development .. Anyways I have deleted that onPostCreate method .. but still no luck :( Can you please share your project files somehow ? – Kuldeep Kumar Mar 05 '17 at 17:13
  • Have you got your action bar with drawer toggle button for both activities ? – Kuldeep Kumar Mar 05 '17 at 17:17
  • Please don't repeat questions. Simply editing your original post with any new information you have, any new code you've tried, or an explanation of why any posted answers aren't working will bump it to the top of the active queue. – Mike M. Mar 05 '17 at 19:12

0 Answers0