Je souhaite afficher la boîte de dialogue et mettre l'activité en pause. Pour attendre l'utilisateur, allumez le GPS. Après cela, il peut interroger la base de données pour remplir la liste.Activité de pause de la boîte de dialogue Android
L'image ci-dessous la description de ce que je veux faire
Et ceci est mon code
public class RestaurantListFragment extends ListFragment {
private ArrayList<Restaurant> restaurants;
private SQLDataHelper dataHelper;
GPSTracker gpsTracker;
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.restaurant_list, null);
}
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
gpsTracker = new GPSTracker(getActivity());
if(!gpsTracker.canGetLocation)
{
showSettingsGPSAlert();
}
dataHelper = new SQLDataHelper(getActivity(), "restaurantDB");
restaurants = new ArrayList<Restaurant>();
dataHelper.openDB();
Cursor cursor = dataHelper.query("Restaurant", new String[]{"Id", "ResName", "Logo", "Address", "Latitude", "Longitude"}, null
, null, null, null, null);
if (cursor.moveToFirst()) {
do {
Restaurant restaurant = new Restaurant();
restaurant.setId(cursor.getInt(0));
restaurant.setResName(cursor.getString(1));
restaurant.setLogo(cursor.getString(2));
restaurant.setAddress(cursor.getString(3));
restaurants.add(restaurant);
} while (cursor.moveToNext());
}
//Collections.sort(restaurants);
RestaurantAdapter restaurantAdapter = new RestaurantAdapter(getActivity(), restaurants);
setListAdapter(restaurantAdapter);
}
public void showSettingsGPSAlert() {
AlertDialog.Builder alertDialog = new AlertDialog.Builder(getActivity());
// Setting Dialog Title
alertDialog.setTitle("GPS is settings");
// Setting Dialog Message
alertDialog.setMessage("GPS is not enabled. Do you want to go to settings menu?");
// On pressing Settings button
alertDialog.setPositiveButton("Settings", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivity(intent);
}
});
// on pressing cancel button
alertDialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
// Showing Alert Message
alertDialog.show();
}
}
Mes problèmes est ce n'est pas attendre son tour utilisateur sur le GPS. Il affiche la liste avec la concurrence de la boîte de dialogue. J'ai chercher beaucoup de solution. Mais ça ne marche pas. S'il vous plaît aider!
Voulez-vous dire que vous voulez attendre que l'utilisateur active le GPS? Si vous êtes plus précis, je pourrais peut-être vous aider. – Milan
oui, c'est excatly je veux –
Désolé de répondre très tard mais, vous devez définir setCancelable (false) à votre boîte de dialogue. Ajoutez un BroadcastReceiver qui écoute si le GPS est activé. (Il devrait y en avoir un pour cela) Et chaque fois que votre BroadcastReceiver reçoit que le GPS est allumé, annulez votre boîte de dialogue et continuez. Ou bloquez toute autre opération jusqu'à ce que vous receviez true de LocationManager.isProviderEnabled (LocationManager.GPS_PROVIDER); – Milan