我正在按照example中的http://developer.android.com来构建一个简单的应用程序,以找到最后一个已知的位置。我在活动文件的以下代码片段中得到变量cannot find symbol variablemLastLocationmLatitudeTextmLongitudeText错误:

    @Override
    public void onConnected(Bundle connectionHint) {
        mLastLocation = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);
        if (mLastLocation != null) {
            mLatitudeText.setText(String.valueOf(mLastLocation.getLatitude()));
            mLongitudeText.setText(String.valueOf(mLastLocation.getLongitude()));
        }
    }


样本中也没有定义变量。我怎样才能解决这个问题?

最佳答案

您需要在UI或main_activity.xml文件中定义提到的两个TextView小部件

....
<TextView
    android:text="-"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/textview1"
    />

  <TextView
    android:text="-"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/textview2"
    />
....


..,然后在MainActivity.java文件的代码中引用它们。
对于mLastLocation,它必须是Location类型,因为函数getLastLocation返回Location类型。

public class MainActivity extends ActionBarActivity implements
    ConnectionCallbacks, OnConnectionFailedListener {

Location mLastLocation;
TextView mLatitudeText,mLongitudeText;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

   mLatitudeText=(TextView)findViewById(R.id.textview1);
   mLongitudeText=(TextView)findViewById(R.id.textview2);
 }


...
@Override
public void onConnected(Bundle connectionHint) {
    mLastLocation = LocationServices.FusedLocationApi.getLastLocation(
            mGoogleApiClient);
    if (mLastLocation != null) {
        mLatitudeText.setText(String.valueOf(mLastLocation.getLatitude()));
        mLongitudeText.setText(String.valueOf(mLastLocation.getLongitude()));
    }
  }
}

10-07 19:23
查看更多