如何设置不同类的TextView文本?
问题描述:
我想在用户位置更改时设置文本视图文本。 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事件文本?
谢谢!
答
我们有2个选项。
其中一个就像MisterSquonk说的那样。将Location侦听器保留为内部类,另一个是将textView的对象传递给mylocationlistener的构造函数。不要忘记在第二步中处理空子句。
使您的'LocationListener'类成为'ListActivity'的''内部'类。 – Squonk 2012-03-17 02:00:48
甚至没有意识到这是一个选项。谢谢。 – Kevin 2012-03-17 02:05:56
由于Android'Activity'是主要用于UI表示的'特殊情况'类,并且它不能直接实例化,所以这是一个常见问题。例如,声明一个作为'侦听器'的类(包括'BroadcastReceiver'类)和'AsyncTask'类,因为嵌套类简化了很多事情。它并不总是最好的方法,你可以用其他方式来做,但它确实变得更加复杂。 – Squonk 2012-03-17 02:15:44