2012-03-09 227 views
0

我對Android和Java相當陌生,希望你能幫助我解決這個問題。從外部類訪問TextView

我有一個嵌套類:

public class MyLocationListener implements LocationListener 

    { 


    public void onLocationChanged(Location loc) 

    { 
     loc.getLatitude(); 
     loc.getLongitude(); 

     String loTude = "Longitude:" + loc.getLongitude(); 
     String laTude = "Latitude: " + loc.getLatitude(); 

     ((TextView) findViewById(R.id.tvLong)).setText(loTude); 
     ((TextView) findViewById(R.id.tvLat)).setText(laTude); 



    } 

如何從我的外部類訪問兩個字符串loTude和laTude? 我是否需要通過一個對象從方法中返回它們,或者還有其他方法嗎?

+0

寫在這個類中的方法,該方法會返回字符串2 s通過一個對象,你想要或寫的任何類2種方法,將分別返回loTude和laTude :) – rohit 2012-03-09 09:55:12

回答

1

如果您有嵌套類,然後讓TextView中的全局對象等作爲....

Class MyActivity extends Activity{ 
     public TextView tvLat,tvLng; 
     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.main); 

      tvLat=(TextView) findViewById(R.id.tvLong); 
      tvLng=(TextView) findViewById(R.id.tvLat); 

    } 
    public class MyLocationListener implements LocationListener 
     { 
      public void onLocationChanged(Location loc) 
       { 
      loc.getLatitude(); 
      loc.getLongitude(); 

      String loTude = "Longitude:" + loc.getLongitude(); 
      String laTude = "Latitude: " + loc.getLatitude(); 

      tvLat.setText(loTude); 
      tvLng.setText(laTude); 

     } 
    } 
} 
+0

這工作:)謝謝 – kincaid 2012-03-09 10:08:51

0

你可以通過將你的活動的參考傳遞給你的自定義類來做到這一點。如下所示:

public class MyLocationListener implements LocationListener 
{ 

    private Activity myActivity; 

    public MyLocationListener(Activity act){ 
     myActivity = act; 
    } 

    public void onLocationChanged(Location loc){ 
     loc.getLatitude(); 
     loc.getLongitude(); 

     String loTude = "Longitude:" + loc.getLongitude(); 
     String laTude = "Latitude: " + loc.getLatitude(); 

     ((TextView) myActivity.findViewById(R.id.tvLong)).setText(loTude); 
     ((TextView) myActivity.findViewById(R.id.tvLat)).setText(laTude); 

    } 

} 

如果您已分別定義您的班級,建議使用此解決方案。否則,找到onCreate方法您的意見,並簡單地使用他們的內部類中

+0

更好地傳遞構造函數中的活動上下文而不是活動,並使用該上下文創建2個textview,以便此類ll使用上下文設置Textviews文本 – rohit 2012-03-09 09:58:50

+0

對不起,你不能從'Context'執行** findViewById **。所以它合理的提供活動的參考 – waqaslam 2012-03-09 10:01:48

+0

謝謝,我也試過這個,它的工作原理。 – kincaid 2012-03-16 08:05:36

0

創建一類像這樣

public class Global extends Application { 
    public static String loTude =""; 
    public static String laTude =""; 
} 

使用字符串值

Global.loTude = "Longitude:" + loc.getLongitude(); 
Global.laTude = "Latitude: " + loc.getLatitude();