2012-03-17 49 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 2012-03-17 02:00:48

+0

甚至没有意识到这是一个选项。谢谢。 – Kevin 2012-03-17 02:05:56

+0

由于Android'Activity'是主要用于UI表示的'特殊情况'类,并且它不能直接实例化,所以这是一个常见问题。例如,声明一个作为'侦听器'的类(包括'BroadcastReceiver'类)和'AsyncTask'类,因为嵌套类简化了很多事情。它并不总是最好的方法,你可以用其他方式来做,但它确实变得更加复杂。 – Squonk 2012-03-17 02:15:44

回答

1

我们有2个选项。

其中一个就像MisterSquonk说的那样。将Location侦听器保留为内部类,另一个是将textView的对象传递给mylocationlistener的构造函数。不要忘记在第二步中处理空子句。

相关问题