Android Navigation Drawer во всех видах деятельности / - PullRequest
0 голосов
/ 09 октября 2019

Привет! Я хочу включить свой навигационный ящик во все действия. Я использую библиотеку SlidingRootNav (Navigation Drawer) в своем приложении.

Вот ссылка и документация на библиотеку, которую я использую в своем приложении https://github.com/yarolegovich/SlidingRootNav

Моя основная активность.


import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

    //Splash Screen Time Out
    private  static final int SPLASH_SCREEN_TIME = 500;


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



        //Call Splash Screen Handler
        splashHandler();


    }

    //Handler For Splash Screen
    public void splashHandler()
    {
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                Intent splashScreenIntent = new Intent(MainActivity.this,HomeActivity.class);
                startActivity(splashScreenIntent);
                finish();
            }
        },SPLASH_SCREEN_TIME);
    }

}



Домашняя активность (которая содержит мой Навигационный ящик.


//All Imports

import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.design.widget.NavigationView;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.MenuItem;
import android.view.View;

import com.yarolegovich.slidingrootnav.SlideGravity;
import com.yarolegovich.slidingrootnav.SlidingRootNav;
import com.yarolegovich.slidingrootnav.SlidingRootNavBuilder;

//Imports For SlidingRootNav

public class HomeActivity extends AppCompatActivity implements AlertDialog.OnClickListener{

    //Sliding Root Nav Builder And Layout Controller
    SlidingRootNavBuilder slidingRootNavBuilder;
    SlidingRootNav slidingRootNavLayout;


    //AlertDialogBox
    AlertDialog.Builder  alertDialogBox;

    Toolbar toolBar;


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

        //Toolbar Settings
         toolBar = findViewById(R.id.toolbar);
        setSupportActionBar(toolBar);



        //Injecting Navigation Drawer
        slidingRootNavBuilder = new SlidingRootNavBuilder(this)
                .withToolbarMenuToggle(toolBar)
                .withMenuLayout(R.layout.navigation_menu).withMenuOpened(false)
                .withGravity(SlideGravity.LEFT)
                .withSavedState(savedInstanceState);
        //Injecting Navigation With Layout
        slidingRootNavLayout = slidingRootNavBuilder.inject();


        //Call Naviagational Liustener
        setNavigationListener();

    }



    //Navigational Item Listener
    public void setNavigationListener()
    {
        NavigationView navigationView =  findViewById(R.id.nav_view);
        navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
                switch (menuItem.getItemId())
                {


                    //Home
                    case R.id.homeMenuItem:
//                        Intent homeIntent = new Intent(HomeActivity,HomeActivity.class);
//                        startActivity(homeIntent);

                        break;


//                    Account
                    case R.id.account:
                        //TODO : Write Intent Constructors For All Cases.
                        Intent accountIntent = new Intent(HomeActivity.this,AccountActivity.class);
                        startActivity(accountIntent);
                        break;


//                        DashBoard
                    case R.id.dashboard:
                        //TODO : Write Intent Constructors For All Cases.
                        break;


//                        Settings
                    case R.id.settings:
                        Intent settingsIntent = new Intent(HomeActivity.this,SettingsActivity.class);
                        startActivity(settingsIntent);
                        break;



//                        Logout
                    case R.id.logout:
                        showDialogBox(HomeActivity.this);
                        break;

                }
                return false;
            }
        });

    }

    //Close Navingation Drawer When Layout(activity_home) is clicked.
    public void closeNavigationMenu(View view)
    {

        //Close Menu OnClick of Layout
        slidingRootNavLayout.closeMenu(true);

    }


    //Show Dialog Box Method
    public  void showDialogBox(Context context)
    {
        //ComponentName componentName = getCallingActivity();
        alertDialogBox = new AlertDialog.Builder(context);
        alertDialogBox.setTitle("Logout");
        alertDialogBox.setMessage("Do you wantto LOGOUT from App");
        alertDialogBox.setPositiveButton("OK",this);
        alertDialogBox.setNegativeButton("Cancel",this);
        alertDialogBox.setCancelable(false);
        alertDialogBox.create().show();
    }


    //DialogBox onClick Method
    @Override
    public void onClick(DialogInterface dialogInterface, int i) {
        switch (i)
        {
            //BUTTON_POSITIVE
            case -1:
                finish();
                break;

        }

    }
}

Меню навигации.

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:id="@+id/navigation_menu_drawer_layout"
    android:layout_height="match_parent">


    <!--Navigation View-->
    <android.support.design.widget.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:background="@color/colorPureWhite"
        app:headerLayout="@layout/navigation_menu_header"
        app:menu="@menu/navigation_menu_items">
    </android.support.design.widget.NavigationView>

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


Настройка активности (я имею в виду второе действие).


import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;

public class SettingsActivity extends AppCompatActivity {

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


   }
}

...