Permitir permissão de localização fina para substituir fragmento

Eu quero perguntar ao usuário se ele deseja conceder uma permissão para acessar sua boa localização e somente se ele conceder eu quero substituir um fragmento e abrir o fragmento do localizador. Nos fragmentos do localizador, existem algumas lojas que o usuário pode ver com base em sua localização. Se ele não permitir o acesso a uma boa localização, quero lhe mostrar uma mensagem adequada. Este é o código:

else if (id == R.id.nav_locator) {
        ActivityCompat.requestPermissions(this,
                new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
                1);
        fragment = new LocatorFragment();
        FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
        ft.replace(R.id.fragmentlayout, fragment);
        ft.commit();

No momento, o aplicativo está travando porque inicia instantaneamente a substituição do fragmento e falha porque substitui antes que o usuário opte por aprovar ou não a localização.

Então basicamente eu precisoalguma idéia de loop ou algo assim isso ignorará a solicitação do usuário se ele optar por não permitir permissão e mostrar a mensagem adequada. E se ele optar por conceder, preciso substituir o fragmento como comum.

questionAnswers(1)

yourAnswerToTheQuestion