如何从 Android 中的 public void 函数访问自定义视图?
How to access custom view from public void function in Android?
我想从 public 中的 void onLocationChanged 访问自定义视图 public class MyCurrentLocationListener 实现了 LocationListener。
我的活动:
public class MyActivity extends ActionBarActivity {
public final static String EXTRA_MESSAGE = "net.motameni.alisapp.MESSAGE";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
MyCurrentLocationListener locationListener = new MyCurrentLocationListener();
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);
}
MyCurrentLocationListener 是这样的:
public class MyCurrentLocationListener implements LocationListener {
public void onLocationChanged(Location location) {
TextView textView = (TextView) findViewById(R.id.location_message);
textView.setTextSize(40);
textView.setText("hello");
setContentView(textView);
}
怎么了???
您不能对非 UI 函数进行 UI 更改。
为此,要么必须将视图对象传递给侦听器方法,要么必须在 activity class 中创建一个方法,该方法从侦听器接收值并更新视图值.
在您的 oncreate 中更新代码:
TextView tv = (TextView)findViewById(R.id.tv1);
MyCurrentLocationListener locationListener = new MyCurrentLocationListener(tv);
并在您的侦听器中 class 创建一个构造函数 -
TextView textView;
public MyCurrentLocationListener (TextView tv){
textView = tv;
}
并更改表单位置 -
public void onLocationChanged(Location location) {
textView.setTextSize(40);
textView.setText("hello");
}
这是最好的方法。
我想从 public 中的 void onLocationChanged 访问自定义视图 public class MyCurrentLocationListener 实现了 LocationListener。 我的活动:
public class MyActivity extends ActionBarActivity {
public final static String EXTRA_MESSAGE = "net.motameni.alisapp.MESSAGE";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
MyCurrentLocationListener locationListener = new MyCurrentLocationListener();
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);
}
MyCurrentLocationListener 是这样的:
public class MyCurrentLocationListener implements LocationListener {
public void onLocationChanged(Location location) {
TextView textView = (TextView) findViewById(R.id.location_message);
textView.setTextSize(40);
textView.setText("hello");
setContentView(textView);
}
怎么了???
您不能对非 UI 函数进行 UI 更改。
为此,要么必须将视图对象传递给侦听器方法,要么必须在 activity class 中创建一个方法,该方法从侦听器接收值并更新视图值.
在您的 oncreate 中更新代码:
TextView tv = (TextView)findViewById(R.id.tv1);
MyCurrentLocationListener locationListener = new MyCurrentLocationListener(tv);
并在您的侦听器中 class 创建一个构造函数 -
TextView textView;
public MyCurrentLocationListener (TextView tv){
textView = tv;
}
并更改表单位置 -
public void onLocationChanged(Location location) {
textView.setTextSize(40);
textView.setText("hello");
}
这是最好的方法。