How to change activity on bottom navigation button click? How to change activity on bottom navigation button click? android android

How to change activity on bottom navigation button click?


I have solved this problem in following way:

1.Create one BaseActivity with bottom nav bar.

 package com.example.apple.bottomnavbarwithactivity; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.widget.RadioButton; import android.widget.RadioGroup;public class BaseActivity extends AppCompatActivity {RadioGroup radioGroup1;RadioButton deals;@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_base);    radioGroup1=(RadioGroup)findViewById(R.id.radioGroup1);    deals = (RadioButton)findViewById(R.id.deals);    radioGroup1.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener()    {        @Override        public void onCheckedChanged(RadioGroup group, int checkedId)        {            Intent in;            Log.i("matching", "matching inside1 bro" + checkedId);            switch (checkedId)            {                case R.id.matching:                    Log.i("matching", "matching inside1 matching" +  checkedId);                    in=new Intent(getBaseContext(),MatchingActivity.class);                    startActivity(in);                    overridePendingTransition(0, 0);                    break;                case R.id.watchList:                    Log.i("matching", "matching inside1 watchlistAdapter" + checkedId);                    in = new Intent(getBaseContext(), WatchlistActivity.class);                    startActivity(in);                    overridePendingTransition(0, 0);                    break;                case R.id.rates:                    Log.i("matching", "matching inside1 rate" + checkedId);                    in = new Intent(getBaseContext(),RatesActivity.class);                    startActivity(in);                    overridePendingTransition(0, 0);                    break;                case R.id.listing:                    Log.i("matching", "matching inside1 listing" + checkedId);                    in = new Intent(getBaseContext(), ListingActivity.class);                    startActivity(in);                    overridePendingTransition(0, 0);                    break;                case R.id.deals:                    Log.i("matching", "matching inside1 deals" + checkedId);                    in = new Intent(getBaseContext(), DealsActivity.class);                    startActivity(in);                    overridePendingTransition(0, 0);                    break;                default:                    break;            }        }    });   } }

BaseActivity layout named base_activity.xml

    <LinearLayout        android:layout_width="match_parent"        android:layout_height="56dp"        android:elevation="10dp"        android:background="@color/white"        android:id="@+id/bottonNavBar"        android:paddingTop="5dp"        android:orientation="horizontal"        android:layout_alignParentBottom="true"        android:foregroundGravity="bottom">        <RadioGroup            android:id="@+id/radioGroup1"            android:gravity="center"            android:layout_height="match_parent"            android:layout_width="match_parent"            android:orientation="horizontal"            android:baselineAligned="false">            <RadioButton                android:layout_width="match_parent"                android:gravity="center"                android:layout_height="match_parent"                android:text="Matching"                android:layout_weight="1"                android:button="@null"                android:padding="2dp"                android:checked="false"                android:textSize="12sp"                android:drawableTop="@drawable/selector_matching"                android:textColor="@drawable/selector_nav_text"                android:id="@+id/matching"/>            <RadioButton                android:layout_width="match_parent"                android:gravity="center"                android:layout_height="match_parent"                android:button="@null"                android:layout_weight="1"                android:padding="2dp"                android:checked="false"                android:textSize="12sp"                android:drawableTop="@drawable/selector_watchlist"                android:textColor="@drawable/selector_nav_text"                android:id="@+id/watchList"                android:text="Watchlist"/>            <RadioButton                android:layout_width="match_parent"                android:gravity="center"                android:layout_height="match_parent"                android:id="@+id/rates"                android:button="@null"                android:paddingTop="5dp"                android:paddingBottom="2dp"                android:paddingLeft="2dp"                android:paddingRight="2dp"                android:layout_weight="1"                android:checked="false"                android:textSize="12sp"                android:drawableTop="@drawable/selector_rates"                android:textColor="@drawable/selector_nav_text"                android:text="Rates"/>            <RadioButton                android:layout_width="match_parent"                android:gravity="center"                android:layout_height="match_parent"                android:button="@null"                android:padding="2dp"                android:checked="false"                android:layout_weight="1"                android:textSize="12sp"                android:drawableTop="@drawable/selector_deals"                android:textColor="@drawable/selector_nav_text"                android:id="@+id/deals"                android:text="Deals"/>            <RadioButton                android:layout_width="match_parent"                android:gravity="center"                android:layout_height="match_parent"                android:button="@null"                android:padding="2dp"                android:checked="false"                android:layout_weight="1"                android:textSize="12sp"                android:drawableTop="@drawable/selector_listing"                android:textColor="@drawable/selector_nav_text"                android:id="@+id/listing"                android:text="Listing"/>        </RadioGroup>    </LinearLayout>    <LinearLayout        android:layout_width="match_parent"        android:layout_height="match_parent"        android:id="@+id/dynamicContent"        android:orientation="vertical"        android:layout_marginBottom="56dp"        android:background="@color/white"        android:layout_gravity="bottom">    </LinearLayout>

2.extend BaseActivity in all the activity that you want to open on bottom nav click and also need to inflate the activity layoutsFor example, I have created five sample activity.

i] MatchingActivity.

  package com.example.apple.bottomnavbarwithactivity;    import android.graphics.Color;    import android.os.Bundle;    import android.support.design.widget.FloatingActionButton;    import android.support.design.widget.Snackbar;    import android.support.v7.app.AppCompatActivity;    import android.support.v7.widget.Toolbar;    import android.view.View;    import android.widget.LinearLayout;    import android.widget.RadioButton;    import android.widget.RadioGroup;              //extends our custom BaseActivity    public class MatchingActivity extends BaseActivity {        LinearLayout dynamicContent,bottonNavBar;        @Override        protected void onCreate(Bundle savedInstanceState) {            super.onCreate(savedInstanceState);                        //setContentView(R.layout.activity_matching);                       //dynamically include the  current activity      layout into  baseActivity layout.now all the view of baseactivity is   accessible in current activity.            dynamicContent = (LinearLayout)  findViewById(R.id.dynamicContent);            bottonNavBar= (LinearLayout) findViewById(R.id.bottonNavBar);            View wizard = getLayoutInflater().inflate(R.layout.activity_matching, null);            dynamicContent.addView(wizard);              //get the reference of RadioGroup.            RadioGroup rg=(RadioGroup)findViewById(R.id.radioGroup1);            RadioButton rb=(RadioButton)findViewById(R.id.matching);                 // Change the corresponding icon and text color on nav button click.            rb.setCompoundDrawablesWithIntrinsicBounds( 0,R.drawable.ic_matching_clicked, 0,0);            rb.setTextColor(Color.parseColor("#3F51B5"));        }    }

ii]WatchlistActivity

 package com.example.apple.bottomnavbarwithactivity;    import android.graphics.Color;    import android.support.v7.app.AppCompatActivity;    import android.os.Bundle;    import android.view.View;    import android.widget.LinearLayout;    import android.widget.RadioButton;    import android.widget.RadioGroup;    public class WatchlistActivity extends AppCompatActivity {        LinearLayout dynamicContent,bottonNavBar;        @Override        protected void onCreate(Bundle savedInstanceState) {            super.onCreate(savedInstanceState);            //setContentView(R.layout.activity_watchlist1);            dynamicContent = (LinearLayout) findViewById(R.id.dynamicContent);            bottonNavBar= (LinearLayout) findViewById(R.id.bottonNavBar);            View wizard = getLayoutInflater().inflate(R.layout.activity_watchlist1, null);            dynamicContent.addView(wizard);            RadioGroup rg=(RadioGroup)findViewById(R.id.radioGroup1);            RadioButton rb=(RadioButton)findViewById(R.id.watchList);            rb.setCompoundDrawablesWithIntrinsicBounds( 0,R.drawable.favourite_heart_selected, 0,0);            rb.setTextColor(Color.parseColor("#3F51B5"));        }    }

iii]RatesActivity

  package com.example.apple.bottomnavbarwithactivity;    import android.graphics.Color;    import android.support.v7.app.AppCompatActivity;    import android.os.Bundle;    import android.view.View;    import android.widget.LinearLayout;    import android.widget.RadioButton;    import android.widget.RadioGroup;    public class RatesActivity extends BaseActivity {        LinearLayout dynamicContent,bottonNavBar;        @Override        protected void onCreate(Bundle savedInstanceState) {            super.onCreate(savedInstanceState);           // setContentView(R.layout.activity_rates);            dynamicContent = (LinearLayout) findViewById(R.id.dynamicContent);            bottonNavBar= (LinearLayout) findViewById(R.id.bottonNavBar);            View wizard = getLayoutInflater().inflate(R.layout.activity_rates, null);            dynamicContent.addView(wizard);            RadioGroup rg=(RadioGroup)findViewById(R.id.radioGroup1);            RadioButton rb=(RadioButton)findViewById(R.id.rates);            rb.setCompoundDrawablesWithIntrinsicBounds( 0,R.drawable.ic_rate_clicked, 0,0);            rb.setTextColor(Color.parseColor("#3F51B5"));        }    }

iv] ListingActivity

 package com.example.apple.bottomnavbarwithactivity;    import android.graphics.Color;    import android.support.v7.app.AppCompatActivity;    import android.os.Bundle;    import android.view.View;    import android.widget.LinearLayout;    import android.widget.RadioButton;    import android.widget.RadioGroup;    public class ListingActivity extends BaseActivity {        LinearLayout dynamicContent,bottonNavBar;        @Override        protected void onCreate(Bundle savedInstanceState) {            super.onCreate(savedInstanceState);             //setContentView(R.layout.activity_listing);            dynamicContent = (LinearLayout) findViewById(R.id.dynamicContent);            bottonNavBar= (LinearLayout) findViewById(R.id.bottonNavBar);            View wizard = getLayoutInflater().inflate(R.layout.activity_listing, null);            dynamicContent.addView(wizard);            RadioGroup rg=(RadioGroup)findViewById(R.id.radioGroup1);            RadioButton rb=(RadioButton)findViewById(R.id.listing);            rb.setCompoundDrawablesWithIntrinsicBounds( 0,R.drawable.ic_listing_clicked, 0,0);            rb.setTextColor(Color.parseColor("#3F51B5"));        }    }

v] DealsActivity

 package com.example.apple.bottomnavbarwithactivity;    import android.graphics.Color;    import android.support.v7.app.AppCompatActivity;    import android.os.Bundle;    import android.view.View;    import android.widget.LinearLayout;    import android.widget.RadioButton;    import android.widget.RadioGroup;    public class DealsActivity extends BaseActivity {        LinearLayout dynamicContent,bottonNavBar;        @Override        protected void onCreate(Bundle savedInstanceState) {            super.onCreate(savedInstanceState);            //setContentView(R.layout.activity_deals);            dynamicContent = (LinearLayout) findViewById(R.id.dynamicContent);            bottonNavBar= (LinearLayout) findViewById(R.id.bottonNavBar);            View wizard = getLayoutInflater().inflate(R.layout.activity_deals, null);            dynamicContent.addView(wizard);            RadioGroup rg=(RadioGroup)findViewById(R.id.radioGroup1);            RadioButton rb=(RadioButton)findViewById(R.id.deals);            rb.setCompoundDrawablesWithIntrinsicBounds( 0,R.drawable.ic_deals_clicked, 0,0);            rb.setTextColor(Color.parseColor("#3F51B5"));        }    }

Note: make sure that you handle back press properly.I have not written any code for back press.

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here


With Activity, you have to declare and init that BottomBar each time you load that activity.

With your problem, my answer is NO.

Btw, you can use Fragment which helps you solve this pretty good.

Time to learn something new, bro.

EDIT

You bring Fragment inside only 1 Activity. And let BottomBar inside Activity while all others view and data set inside Fragment.

Just try it!