2011-03-15 208 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是連續添加和刪除的