Я пытаюсь установить текст текста, когда изменяется местоположение пользователя. Весь код для части GPS работает. Я тестировал с помощью Log();Как установить текст TextView из другого класса?
Теперь вместо использования журнала, я хочу отобразить ту же информацию на основном макете, но событие LocationChanged находится в другом классе, поэтому у меня нет доступа к макету.
public class mylocationlistener implements LocationListener
{
@Override
public void onLocationChanged(Location location)
{
if (location != null)
{
Log.v("kjdv", location.getLatitude() + ", " + location.getLongitude());
//I would like to set a textview here, but don't have access to the object
}
}
Этот класс будет создаваться здесь:
public class gps extends ListActivity implements View.OnClickListener
{
@Override
public void onCreate(Bundle icicle)
{
super.onCreate(icicle);
setContentView(R.layout.main);
SetupLocationListener();
}
public void SetupLocationListener()
{
LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
LocationListener ll = new mylocationlistener(this);
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, ll);
}
Так как из класса myLocationListener я могу установить текст в onLocationChanged случае?
Спасибо!
Сделайте свой класс «LocationListener» «внутренним» классом вашей «ListActivity». – Squonk
Даже не знал, что это вариант. Благодарю. – Kevin
Поскольку Android 'Activity' является классом« специальный случай », который в основном используется для представления пользовательского интерфейса, и тот факт, что он никогда не может быть создан непосредственно, это обычная проблема. Объявление класса, который работает как «слушатель» (включая классы «BroadcastReceiver»), а также классы «AsyncTask», например, как вложенные классы, упрощает многое. Это не всегда лучший подход, и вы можете сделать это другими способами, но он становится более сложным. – Squonk