Как я могу отправить уведомление изнутри метода onProviderDisabled LocationListener - PullRequest
0 голосов
/ 24 июня 2011

Как я могу отправить уведомление изнутри метода onProviderDisabled LocationListener?

До сих пор я использовал:

Toast.makeText(mainmenu, "GPS Location providers are disabled... blah blah", Toast.LENGTH_LONG).show();}});

но это влечет за собой использование статической переменной mainmenu, хранящейся при первом создании экземпляра класса mainmenu - я считаю, что это плохая идея, если объект mainmenu удаляется из памяти, я думаю - поэтому я думаю, что мне следует использовать уведомления .

Полагаю, мне нужно иметь возможность иметь ссылку на действие для создания намерения, но к какому действию я могу обратиться, поскольку мой слушатель местоположения не хранит такую ​​ссылку?

Ответы [ 3 ]

1 голос
/ 18 апреля 2012

Вы можете использовать свой собственный интерфейс.

public interface LocationUpdatesReveiver {
    /** onLocationChanged */
    public void onLocationChanged(Location location);
}

Заставьте ваш класс активности реализовать этот интерфейс и передайте ссылку на него в класс LocationListener

public class MyActivity extends Activity implements LocationUpdatesReveiver{
...
        location = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
        listener = new LocListener(MyActivity.this);
}

Назовите реализованный метод вашей деятельности

public class LocListener implements LocationListener {

    private LocationUpdatesReveiver receiver;

    public LocListener(LocationUpdatesReveiver receiver) {
        this.receiver = receiver;
    }

    @Override
    public void onLocationChanged(Location location) {
        if(null != location){
            receiver.onLocationChanged(location);
        }
    }
}

Это для onLocationUpdate, но вы можете использовать ту же технику для почти всего

1 голос
/ 24 июня 2011

Я не уверен, будет ли это работать всегда, но вы можете позвонить Application.getApplicationContext() и использовать его.

Если ваш LocationListener является частью Activity (в форме внутреннего класса), вы можететакже используйте this.MyActivity.

0 голосов
/ 24 июня 2011

Вы можете настроить свой класс следующим образом:

public class myClass  extends android.app.Application implements LocationListener{
    private LocationManager locationManager;
    private String provider;
    private Location location;
    ...

Тогда просто используйте функцию в этом классе:

public void onProviderDisabled(String provider) {
    Toast.makeText(getApplicationContext(), "Disenabled provider " + provider,
            Toast.LENGTH_SHORT).show();
}
...