Как я могу выйти из своей активности на панели инструментов в приложении для Android? - PullRequest
0 голосов
/ 02 сентября 2018

В моем приложении для Android есть три действия: основная активность, активность входа в систему и активность панели мониторинга. Активность панели мониторинга состоит из 5 фрагментов, которые я добавил в backstack. Мое приложение передает местоположение пользователя каждые пять минут на мой сервер. Когда пользователь входит в систему, я завершаю вход в систему. и основное действие. Теперь я хочу, чтобы пользователь нажимал назад после очистки всех фрагментов backstack, мое приложение свернулось, как мы делаем, нажав кнопку home, и оно должно продолжать отправлять данные о местоположении. И когда пользователь снова откроет приложение, он должен быть на панели инструментов. Вот мое Код активности панели инструментов. Любая помощь будет принята с благодарностью. Пожалуйста, предоставьте решение с кодом.

package com.example.narmail.myapp.Api.Activities;

        import android.Manifest;
        import android.app.Activity;
        import android.content.DialogInterface;
        import android.content.Intent;
        import android.content.pm.PackageManager;
        import android.os.Build;
        import android.support.annotation.NonNull;
        import android.support.design.widget.NavigationView;
        import android.support.design.widget.NavigationView.OnNavigationItemSelectedListener;
        import android.support.v4.app.Fragment;
        import android.support.v4.app.FragmentManager;
        import android.support.v4.content.ContextCompat;
        import android.support.v4.view.GravityCompat;
        import android.support.v4.widget.DrawerLayout;
        import android.support.v7.app.ActionBarDrawerToggle;
        import android.support.v7.app.AlertDialog;
        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.widget.Button;
        import android.widget.ProgressBar;
        import android.widget.Toast;

        import com.example.narmail.truck30mint.Api.Api.UserApi;
        import com.example.narmail.truck30mint.Api.Fragments.AddTruckFragment;
        import com.example.narmail.truck30mint.Api.Fragments.DashboardFragment;
        import com.example.narmail.truck30mint.Api.Fragments.ManageLoadFragment;
        import com.example.narmail.truck30mint.Api.Fragments.ManageTruckFragment;
        import com.example.narmail.truck30mint.Api.Fragments.PostLoadFragment;
        import com.example.narmail.truck30mint.Api.models.UserModels.User;
        import com.example.narmail.truck30mint.Api.services.LocationService;
        import com.example.narmail.truck30mint.Api.Api.TruckApi;
        import com.example.narmail.truck30mint.R;

        public class DashboardActivity extends AppCompatActivity implements OnNavigationItemSelectedListener{

        public static Button startDutyBtn;
        public static Button stopDutyBtn;
        public static Activity activity = null;
        public String token = null;
        public static Boolean truck = false;
        NavigationView navigationView;
        public static ProgressBar progressBar;
        DrawerLayout drawerLayout;
        Toolbar toolbar;
        ActionBarDrawerToggle actionBarDrawerToggle;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        activity = this;
        User user = new User(getApplicationContext());
        token = user.getToken();
        //  Toast.makeText(this,"in onCreate dasboard activity",Toast.LENGTH_SHORT).show();

        System.out.println("in dashboard activity token is "+token);
        setContentView(R.layout.activity_dashboard);

        setToolbar();
        startDutyBtn = findViewById(R.id.startDutyBtn);
        stopDutyBtn = findViewById(R.id.stopDutyBtn);
        progressBar = findViewById(R.id.dashboardProgressBar);
        TruckApi.hasUserTrucksForDashboardActivity(DashboardActivity.this);
        runtime_permissions();
        startDutyBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent i =new Intent(getApplicationContext(),LocationService.class);
                startService(i);
            }
        });

        stopDutyBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent i = new Intent(getApplicationContext(),LocationService.class);
                stopService(i);

            }
        });
        navigationView = findViewById(R.id.nav_view);
        navigationView.setNavigationItemSelectedListener(this);
        // navigationView.OnNavigationItemSelectedListener(this);

        }

        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem item) {

        Fragment fragment = null;
        switch (item.getItemId()){
            case R.id.nav_home:
              //  finish();
                fragment = new DashboardFragment();
                break;
            case R.id.nav_post_load:
             fragment = new PostLoadFragment();
             break;
            case R.id.nav_add_truck:
               fragment = new AddTruckFragment();
               break;
            case R.id.nav_manage_truck:
                fragment = new ManageTruckFragment();
                break;
            case R.id.nav_manage_load:
                fragment = new ManageLoadFragment();
                break;
            case R.id.nav_signout:
                signoutAlert();
                break;

        }
        if (fragment != null) {
            FragmentManager fragmentManager = getSupportFragmentManager();
            fragmentManager.beginTransaction()
                    .replace(R.id.screen_area, fragment).addToBackStack(null).commit();
        }else{
            fragment = new DashboardFragment();
            FragmentManager fragmentManager = getSupportFragmentManager();
            fragmentManager.beginTransaction()
                    .replace(R.id.screen_area, fragment).commit();
        }
        drawerLayout = findViewById(R.id.drawerLayout);
        drawerLayout.closeDrawer(GravityCompat.START);
        return true;
        }

        private void setToolbar(){
        drawerLayout = findViewById(R.id.drawerLayout);
        toolbar = findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        // toolbar.setNavigationIcon(R.drawable.back_arraow);
        actionBarDrawerToggle = new ActionBarDrawerToggle(this,drawerLayout,toolbar,R.string.app_name,R.string.app_name);
        drawerLayout.addDrawerListener(actionBarDrawerToggle);
        actionBarDrawerToggle.syncState();
        }

        /*   private void enable_buttons() {

        startDutyBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent i =new Intent(getApplicationContext(),LocationService.class);
                startService(i);
            }
        });

        stopDutyBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                Intent i = new Intent(getApplicationContext(),LocationService.class);
                stopService(i);

            }
        });
        }*/

        private boolean runtime_permissions() {
        if(Build.VERSION.SDK_INT >= 23 && ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED){

            requestPermissions(new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION},100);

            return true;
        }
        return false;
        }


        @Override
        public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        if(requestCode == 100){
            if( grantResults[0] == PackageManager.PERMISSION_GRANTED && grantResults[1] == PackageManager.PERMISSION_GRANTED){
             //   enable_buttons();
            }else {
                runtime_permissions();
            }
        }
        }

        /*    @Override
        public void onBackPressed() {
        if (getSupportFragmentManager().getBackStackEntryCount() > 0) {
            getSupportFragmentManager().popBackStack();
        }else{
            new AlertDialog.Builder(this)
                    .setMessage("Are you sure you want to exit?")
                    .setCancelable(false)
                    .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int id) {
                            DashboardActivity.this.finish();
                        }
                    })
                    .setNegativeButton("No", null)
                    .show();
            super.onBackPressed();
        }
        }*/
        public void signoutAlert(){
        new AlertDialog.Builder(this)
                .setMessage("Are you sure you want to Signout?")
                .setCancelable(false)
                .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int id) {
                        UserApi.logOut(DashboardActivity.this);
                    }
                })
                .setNegativeButton("No", null)
                .show();
        }

        }
...