如何从 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");
}

这是最好的方法。