2016-01-07 2 views
0

У меня есть те же методы и вызовы в 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); 
} 
+0

У вас есть разрешение на приложение, чтобы получить доступ к этому местоположению? '' – ImDeveloping

+0

@ImDeveloping yes, у меня нет проблем с получением прогноза для текущего местоположения. –

ответ

1
  @Override 
      public void onRefresh() { 
      final GPSTracker gpsTracker = new GPSTracker(MainActivity.this); 
      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); 
    } 
}); 
+0

Это решило. Я полностью пропустил это :(Большое спасибо. –

1

onRestart вы создаете новый экземпляр GPSTracker. попробуйте обновить обработчик GPSTracker в onRefresh. дайте ему попробовать

+0

Это решило. Я полностью пропустил это :(Спасибо большое. –

Смежные вопросы