2011-03-15 106 views
0

嗨 我想更新一个textview来通知用户GPS坐标已被记录。 我的问题是,我需要从另一个类访问位置信息,我不能直接编辑除了onCreate类之外的任何东西的textview。Android TextView更新

这里是我的代码:

public class Location extends Activity { 
    /** Called when the activity is first created. */ 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     LocationManager mlocManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE); 

     LocationListener mlocListener = new MyLocationListener(); 


     mlocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, mlocListener); 

     } 



     public class MyLocationListener implements LocationListener 

     { 

     private final String TAG = null; 

     @Override 
     public void onLocationChanged(android.location.Location location) { 
      // TODO Auto-generated method stub 

       location.getLatitude(); 

       location.getLongitude(); 

       String Text = "My current location is: " + "Latitud = " + location.getLatitude() + "Longitud = " + location.getLongitude(); 

       try 
       { 
        File root = Environment.getExternalStorageDirectory(); 
        File gps = new File(root, "log.txt"); 




       BufferedWriter out = new BufferedWriter(
         new FileWriter(gps,true)) ; 

       TextView tv = (TextView)findViewById(R.id.textView1); 
       tv.setText(Text); 
       out.write(Text); 
       out.write(""); 
       out.close(); 

       } 


       catch (IOException e) { 


        Log.e(TAG, "Could not write file " + e.getMessage()); 

       } 

     } 

感谢

回答

0

存放在模型对象或单身的位置信息,然后从其他类访问这些信息?

+0

你的意思是创建一个静态的String文本并在onCreate类中使用它来更新TextView? – Nekro 2011-03-15 18:17:38

0

在活动类中设置处理程序,并将其传递给处理程序,当调用处理程序时,使用字符串向消息处理程序发送消息。 (处理程序将更新GUI)。 http://developer.android.com/reference/android/os/Handler.html

编辑:顺便说一句,你可以从课堂外改变GUI,但你必须在同一个线程。

+0

我没有使用多于1个线程,并且当前代码中的TextView没有在onLocationUpdate类中更新。我通过在onCreate类中更新它来测试它,它的工作原理是它在其他类中不起作用。 – Nekro 2011-03-15 18:15:16

+0

我将它添加为评论,因为它在你的情况并不重要。实际上,对onLocationChanged()的调用来自另一个线程,因此,所有侦听器都作为另一个线程的一部分运行。 – MByD 2011-03-15 18:22:27

+0

啊好吧奇怪的是,如果我创建相同的应用程序,并使用敬酒在android 2.2或2.1敬酒在onChange类显示罚款,但在2.3上,敬酒不会显示。 – Nekro 2011-03-15 19:54:40

1

我有一个与textview类似的问题,我使用的是gps类,而且我在屏幕上有更多的textview,比如这个textview在屏幕上移动的感兴趣的位置;

我删除所有的textview和后再添加textview,所以我可以更新textview的位置;但我不能执行onclick方法,因为textview是连续添加和删除的