How to change activity on bottom navigation button click?

前端 未结 2 1713
温柔的废话
温柔的废话 2020-12-25 14:01

I want to use bottom navigation bar in my existing android app but the problem is all screen are activity ,is it possible to load activity without hiding the bottom navigati

相关标签:
2条回答
  • 2020-12-25 14:07

    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!

    0 讨论(0)
  • 2020-12-25 14:24

    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;
    
    @Override
    protected 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 layouts For 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.

    0 讨论(0)
提交回复
热议问题