当前位置: 首页 > 面试题库 >

无法将类别转换为android.view.View $ OnClickListener

陈胤
2023-03-14
问题内容

我在尝试进行G +登录时遇到了一些问题。我认为G +按钮不起作用。

我也尝试过清理项目。

IDE:Android Studio 1.1.0播放服务:6.5.87

谢谢。

-

LoginActivity:

 package com.nimbus.podchest;

import android.os.Bundle;

import android.support.v4.app.FragmentActivity;
import android.view.View;

import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.SignInButton;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.plus.Plus;


public class LoginActivity extends FragmentActivity implements GoogleApiClient.ConnectionCallbacks,
        GoogleApiClient.OnConnectionFailedListener {

    private GoogleApiClient mGoogleApiClient;
    private SignInButton SignInButton;

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

        // Create a GoogleApiClient instance
        mGoogleApiClient = new GoogleApiClient.Builder(this)
                .addApi(Plus.API)
                .addScope(Plus.SCOPE_PLUS_LOGIN)
                .addConnectionCallbacks(this)
                .addOnConnectionFailedListener(this)
                .build();

        SignInButton = (SignInButton) findViewById(R.id.sign_in_button);

        SignInButton.setOnClickListener((android.view.View.OnClickListener) this);
    }


    public void onClick(View view) {
        if (view.getId() == R.id.sign_in_button) {
            mGoogleApiClient.connect();
        }
    }

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

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

    }

    @Override
    public void onConnected(Bundle connectionHint) {
        // Connected to Google Play services!
        // The good stuff goes here.
    }

    @Override
    public void onConnectionSuspended(int cause) {
        // The connection has been interrupted.
        // Disable any UI components that depend on Google APIs
        // until onConnected() is called.
    }

    @Override
    public void onConnectionFailed(ConnectionResult result) {
        // This callback is important for handling errors that
        // may occur while attempting to connect with Google.
        //
        // More about this in the next section.
    }
}

Logcat:

03-10 23:58:26.747  10123-10123/com.nimbus.podchest E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: com.nimbus.podchest, PID: 10123
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.nimbus.podchest/com.nimbus.podchest.LoginActivity}: java.lang.ClassCastException: com.nimbus.podchest.LoginActivity cannot be cast to android.view.View$OnClickListener
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2314)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2388)
            at android.app.ActivityThread.access$800(ActivityThread.java:148)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1292)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5312)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:696)
     Caused by: java.lang.ClassCastException: com.nimbus.podchest.LoginActivity cannot be cast to android.view.View$OnClickListener
            at com.nimbus.podchest.LoginActivity.onCreate(LoginActivity.java:25)
            at android.app.Activity.performCreate(Activity.java:5953)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1128)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2267)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2388)
            at android.app.ActivityThread.access$800(ActivityThread.java:148)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1292)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5312)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:696)
03-11 00:00:13.565  11822-11822/com.nimbus.podchest E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: com.nimbus.podchest, PID: 11822
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.nimbus.podchest/com.nimbus.podchest.LoginActivity}: java.lang.ClassCastException: com.nimbus.podchest.LoginActivity cannot be cast to android.view.View$OnClickListener
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2314)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2388)
            at android.app.ActivityThread.access$800(ActivityThread.java:148)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1292)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5312)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:696)
     Caused by: java.lang.ClassCastException: com.nimbus.podchest.LoginActivity cannot be cast to android.view.View$OnClickListener
            at com.nimbus.podchest.LoginActivity.onCreate(LoginActivity.java:35)
            at android.app.Activity.performCreate(Activity.java:5953)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1128)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2267)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2388)
            at android.app.ActivityThread.access$800(ActivityThread.java:148)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1292)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5312)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:696)

问题答案:

如果您阅读Logcat,则可以在此处看到问题:

com.nimbus.podchest.LoginActivity.onCreate(LoginActivity.java:25)

因此,在onCreate函数的第25行,您尝试将您的activity(LoginActivity)强制转换为android.view.View$OnClickListener。您不能像这样转换此类,因为它们之间没有关联。

您需要添加类implements OnClickListener定义LoginActivity才能进行转换。

现在,您将能够只将当前信息传递Activity给侦听器:

SignInButton.setOnClickListener(this);


 类似资料:
  • 我的customer.xsd如下所示。我正试图将它转换为pojo类schema_reference.4:未能读取模式文档“xml.xsd”,因为 1)找不到文件; 2)文件无法阅读; 3)文档的根元素不是。 我正在使用maven将XSD转换为Java clases。

  • 尝试将实体转换为dto时,使用modelmapper时出错。 我的java类是: 用户类: Rol等级: 用户到类: 当我尝试映射用户时。类到UserDTO。当modelmapper出现下一个错误时初始化: 此外,我尝试使用此modelmapper配置: 错误: 如果RolDTO类是外部化的,模型映射器工作正常。我希望你能帮助我解决这个问题。 谢谢。

  • 问题内容: 我正在尝试将文件保存到SQL Server数据库中,该文件将保存在其中的列是datatype 。 我目前这样做的方式是通过获取文件路径并将文件转换为字节数组。 然后,我使用插入查询和convert函数将字节插入数据库,以将转换为: 但是,在SQL Server数据库中,的值始终为 而且,无论选择哪个文件,都始终是该数字。因此,如果您能告诉我为什么会这样,以及我应该采取什么措施来防止这种

  • 问题内容: 我想将SQL COUNT的结果存储在变量中,然后将它们除,但是出现错误: 注意:类mysqli_result的对象无法在----中转换为int 我曾经在测试时显示结果…我该如何解决? 问题答案: 您需要先获取结果并将其存储在变量中,然后再进行数学运算。

  • 问题内容: 我有一个问题,我的应用生成了此异常,我听不懂。我已经在我的build.gradle中实现了multiDexEnabled 我的班级Java } 文件摇篮 Manifest.xml 问题答案: 我认为您应该将班级扩展到自己的班级,如下所示: 之后,您必须将文件更改为此: 请检查此链接以获取更多信息:http : //developer.android.com/reference/andr

  • 问题内容: 我在SO的某处找到了此字符串扩展名,它使我可以将html代码转换为属性字符串: 在Swift 3中工作正常,但在Swift 4中,Xcode抱怨: 无法将类型“ NSAttributedString.DocumentAttributeKey”的值转换为预期的字典密钥类型“ NSAttributedString.DocumentReadingOptionKey” 我该如何解决? 问题答案