У меня есть те же методы и вызовы в onRefresh() и onRestart(), но по какой-то причине onRestart() делает то, что я хочу точно, но onRefresh() действует иначе. Я хочу, чтобы приложение понимало, когда местоположение отключено во время работы.onRestart() и onRefresh() действуют в соответствии с тем же кодом
onRestart() делает это: я запускаю приложение, получаю данные о прогнозе, отключает местоположение из строки состояния, нажимает кнопку «домой» и снова открываю приложение. Как и ожидалось, onRestart() пытается проверить статус GPS (с gpsTracker.getIsGPSEnabled()), видит, что местоположение отключено и отправляет соответствующее сообщение Toast.
onRefresh() делает это: я запускаю приложение, получаю данные о прогнозе, отключает локализацию из строки состояния, даже жду несколько секунд, а затем обновляю приложение. Неожиданно onRefresh() дает отправку тоста «Data Refreshhed», даже если он получает «null, null» как широту и долготу местоположения.
Я мог бы указать и другие коды, но если возникла проблема с остальной частью кода, почему бы onRestart() действовать так, как я хочу? Я не получаю никаких ошибок. Любая помощь будет высоко оценен. Благодарю.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
final GPSTracker gpsTracker = new GPSTracker(this);
mSwipeRefreshLayout.setColorSchemeColors(Color.RED, Color.GREEN, Color.BLUE, Color.CYAN);
mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
mSwipeRefreshLayout.setRefreshing(false);
if (gpsTracker.getIsGPSTrackingEnabled()) {
gpsTracker.getLocation();
getForecast(gpsTracker);
Toast.makeText(MainActivity.this, "Data Refreshed", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(MainActivity.this, "Location is not enabled", Toast.LENGTH_LONG).show();
}
}
}, 3000);
}
});
}
@Override
protected void onRestart() {
super.onRestart();
final GPSTracker gpsTracker = new GPSTracker(this);
new Handler().postDelayed (new Runnable()
@Override public void run() {
gpsTracker.getLocation();
if (gpsTracker.getIsGPSTrackingEnabled()) {
getForecast(gpsTracker);
Toast.makeText(MainActivity.this, "Data Refreshed", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(MainActivity.this, "Location is not enabled", Toast.LENGTH_LONG).show();
}
}
}, 3000);
}
У вас есть разрешение на приложение, чтобы получить доступ к этому местоположению? ' ' –
ImDeveloping
@ImDeveloping yes, у меня нет проблем с получением прогноза для текущего местоположения. –