java - Android SDK 如何实现 OnClickListener

标签 java android sdk

伙计们,我需要有关此代码的帮助:

    public  View.OnClickListener btnGetLastLocationOnClickListener = new View.OnClickListener() {

    @Override
    public void onClick(View v) {

        if (mGoogleApiClient != null) {
            if (mGoogleApiClient.isConnected()) {
                getMyLocation();
            } else {
                Toast.makeText(AddEditActivity.this,
                        "!mGoogleApiClient.isConnected()", Toast.LENGTH_LONG).show();
            }
        } else {
            Toast.makeText(AddEditActivity.this,
                    "mGoogleApiClient == null", Toast.LENGTH_LONG).show();
        }
    }
};

所以我想做的是,当我点击 btnGetLocation 时,这段代码应该可以工作,但是当我开始 Activity 时,代码会自动工作,所以我怎样才能让只有当我点击按钮时才工作?

我希望你们理解这个问题,我是新的 Android 开发者,所以我还在学习请原谅我的愚蠢问题。

谢谢

*** 更新:

这里是完整的代码:

 TextView txtmylink;
GoogleApiClient mGoogleApiClient;
Location mLastLocation;
Button getlastlocation;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    txtmylink = (TextView) findViewById(R.id.mylink);
    getlastlocation = (Button) findViewById(R.id.getlastlocation);
    getlastlocation.setOnClickListener(getlastlocationOnClickListener);

    // Create an instance of GoogleAPIClient.
    if (mGoogleApiClient == null) {
        mGoogleApiClient = new GoogleApiClient.Builder(this)
                .addConnectionCallbacks(this)
                .addOnConnectionFailedListener(this)
                .addApi(LocationServices.API)
                .build();
    }
}

View.OnClickListener getlastlocationOnClickListener = new View.OnClickListener() {
    @Override
    public void onClick(View v) {

        if (mGoogleApiClient != null) {
            if (mGoogleApiClient.isConnected()) {
                getMyLocation();
            } else {
                Toast.makeText(MainActivity.this,
                        "!mGoogleApiClient.isConnected()", Toast.LENGTH_LONG).show();
            }
        } else {
            Toast.makeText(MainActivity.this,
                    "mGoogleApiClient == null", Toast.LENGTH_LONG).show();
        }
    }
};

private void getMyLocation() {
    try {
        /* code should explicitly check to see if permission is available
        (with 'checkPermission') or explicitly handle a potential 'SecurityException'
         */
        mLastLocation = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);
        if (mLastLocation != null) {
            txtmylink.setText(String.valueOf("http://maps.google.com/maps?q=") +
                    String.valueOf(mLastLocation.getLatitude()) +
                    String.valueOf(",")+ String.valueOf(mLastLocation.getLongitude()));

        } else {
            Toast.makeText(MainActivity.this,
                    "mLastLocation == null",
                    Toast.LENGTH_LONG).show();
        }
    } catch (SecurityException e) {
        Toast.makeText(MainActivity.this,
                "SecurityException:\n" + e.toString(),
                Toast.LENGTH_LONG).show();
    }
}

@Override
protected void onStart() {
    mGoogleApiClient.connect();
    super.onStart();
}

@Override
protected void onStop() {
    mGoogleApiClient.disconnect();
    super.onStop();
}

@Override
public void onConnected(@Nullable Bundle bundle) {
    getMyLocation();
}

@Override
public void onConnectionSuspended(int i) {
    Toast.makeText(MainActivity.this,
            "onConnectionSuspended: " + String.valueOf(i),
            Toast.LENGTH_LONG).show();
}

@Override
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
    Toast.makeText(MainActivity.this,
            "onConnectionFailed: \n" + connectionResult.toString(),
            Toast.LENGTH_LONG).show();
}

最佳答案

那是因为您还没有将您编写的 View.onClickListener 对象关联到任何对象。因此,当 Activity 启动时,监听器的代码就会被执行。当您希望特定 View 说“A”来响应点击时,您可以将 View.onClickListener 关联到它。因此,在您的情况下添加以下内容。

yourbutton.setOnClickListener(btnGetLastLocationOnClickListener)

确保您已将 yourbutton 绑定(bind)到 Button View 。

关于java - Android SDK 如何实现 OnClickListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38395472/

相关文章:

java - APDU 命令异步调用

android - Flutter开发(flutter-dev)›需要紧急帮助…由于gradle问题,我无法在android设备中运行flutter应用,并且无法构建apk

Android - 在 onCreate() 代码之前触发 onPostCreate() 代码

android - 2x3 自定义按钮网格布局不适合 TableRow

java - 如何使用 Model 类在 Spinner 中获取选定值?

java - 如何在 Spring Boot 中使用注释配置 View 解析器?

javascript - 当 JS SDK 初始化并准备好进行 API 调用时的回调

java - 使用指定的 .pem 文件从 Glassfish 获取

Java 中类似 JavaScript 的对象数据类型?

java - java中输入为零之前的整数乘积