Android: Alert Dialog disappears and executes next Intent

后端 未结 2 1481
一生所求
一生所求 2021-01-17 04:19

I\'m using a GPS disabled AlertDialog and once the user enables GPS, I move onto another Activity via an Intent. The problem is that the AlertDialog appears and then moves o

相关标签:
2条回答
  • 2021-01-17 05:05

    It looks like the problem is that while the GPS location isn't enabled, you are still getting a location in myLocation.getLocation.

    After you call createGpsDisabledAlert(), you probably should return instead of continuing with the method.

    0 讨论(0)
  • 2021-01-17 05:11

    After you show the dialog, createGpsDisabledAlert will continue on and finish even before you click OK or Cancel. Maybe refactor the rest of the code in OnClickNearMe to another method and call it only if location isn't enabled, and also call it after your settings page. Maybe something like:

    public void OnClickNearMe(View view) {
        LocationManager locManager = (LocationManager) getSystemService(LOCATION_SERVICE);
        if (!locManager.isProviderEnabled(LocationManager.GPS_PROVIDER)){   
            createGpsDisabledAlert();   
        } else {
            getLocation();
        }
    }
    
    private void getLocation() {
        Location locationResult = null;
        MyLocation myLocation = new MyLocation();
        boolean locationEnabled = myLocation.getLocation(this, locationResult);
    
        if (locationEnabled == true) {
            locationResult = myLocation.getLocationResult();
            showResultsScreen(locationResult);
        } else {
            Toast.makeText(this, R.string.noLoc, Toast.LENGTH_LONG).show();
        }
    }
    
    private void createGpsDisabledAlert(){   
        AlertDialog.Builder builder = new AlertDialog.Builder(this);   
        builder.setMessage("Your GPS is disabled! Would you like to enable it?")   
             .setCancelable(false)   
            .setPositiveButton("Enable GPS",   
                 new DialogInterface.OnClickListener(){   
                  public void onClick(DialogInterface dialog, int id){
                       showGpsOptions(); 
                       getLocation();
                  }   
             });   
             builder.setNegativeButton("Do nothing",   
                  new DialogInterface.OnClickListener(){   
                  public void onClick(DialogInterface dialog, int id){   
                       dialog.cancel(); 
                  }   
             });   
        AlertDialog alert = builder.create();
        alert.show();
        }  
    
        private void showGpsOptions(){   
                Intent gpsOptionsIntent = new Intent(   
                        android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS);   
               startActivity(gpsOptionsIntent);   
        }  
    
        private void showResultsScreen(Location locationResult){
             Intent resultsIntent = new Intent(this, ResultScreenList.class); 
               startActivity(resultsIntent);
        }
    }
    
    0 讨论(0)
提交回复
热议问题