2012-03-17 3 views
1

Я пытаюсь установить текст текста, когда изменяется местоположение пользователя. Весь код для части 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 случае?

Спасибо!

+1

Сделайте свой класс «LocationListener» «внутренним» классом вашей «ListActivity». – Squonk

+0

Даже не знал, что это вариант. Благодарю. – Kevin

+0

Поскольку Android 'Activity' является классом« специальный случай », который в основном используется для представления пользовательского интерфейса, и тот факт, что он никогда не может быть создан непосредственно, это обычная проблема. Объявление класса, который работает как «слушатель» (включая классы «BroadcastReceiver»), а также классы «AsyncTask», например, как вложенные классы, упрощает многое. Это не всегда лучший подход, и вы можете сделать это другими способами, но он становится более сложным. – Squonk

ответ

1

У нас есть 2 варианта.

один как раз как MisterSquonk сказал. сохраняя слушателя местоположения как внутренний класс, а другой - передать объект textView конструктору mylocationlistener. Не забывайте обрабатывать нулевое предложение на втором шаге.

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