2012-03-09 298 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();