java 使用 onClickListener (Intent) 时出错

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/27704006/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-11-02 12:14:45  来源:igfitidea点击:

Error using onClickListener (Intent)

javaandroidandroid-intent

提问by Skizo-oz??S

Well, I'm trying to create an intent on a "login.java" the code is :

好吧,我试图在“login.java”上创建一个意图,代码是:

 Button btEntrar = (Button) findViewById(R.id.btnSingIn);
    btEntrar.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent i;
            i = new Intent(this, MainActivity.class);
            startActivity(i);


        }
    });

But it says that I can't go to the other activity saying this :

但它说我不能去其他活动说这个:

Error:(24, 21) error: no suitable constructor found for Intent(,Class) constructor Intent.Intent(String,Uri) is not applicable (argument mismatch; cannot be converted to String) constructor Intent.Intent(Context,Class) is not applicable (argument mismatch; cannot be converted to Context)

错误:(24, 21) 错误:没有找到合适的构造函数 Intent(,Class) 构造函数 Intent.Intent(String,Uri) 不适用(参数不匹配;无法转换为字符串)构造函数 Intent.Intent(Context,Class)不适用(参数不匹配;无法转换为上下文)

and...

和...

Error:Execution failed for task ':app:compileDebugJava'. Compilation failed; see the compiler error output for details.

错误:任务 ':app:compileDebugJava' 的执行失败。编译失败;有关详细信息,请参阅编译器错误输出。

回答by Sufiyan Ghori

Just a few lines to explain the reason why thisdoes not work in:

只需几行就可以解释为什么this不起作用的原因:

i = new Intent(this, MainActivity.class)

The intent is created inside another class, here an anonymous inner class OnClickListener. Thus thisdoes not refer the instance of your Activity (or Context) as intended but the instance of your anonymous inner class OnClickListener.

意图是在另一个类中创建的,这里是一个匿名内部类OnClickListener。因此this,不会按预期引用您的 Activity(或上下文)的实例,而是引用您的匿名内部类的实例OnClickListener

So you should provide the correct context of your class.

所以你应该提供你班级的正确上下文。

i = new Intent(YourClassName.this, MainActivity.class)

回答by Abhishek Chaubey

use if you want to send it from login.javato mainactivity.classuse

如果你想从发送用它login.javamainactivity.class使用

 Intent intent=new Intent(login.this,Mainactivity.class);
startActivity(intent);

回答by Naveen Tamrakar

updated code in to your activity

将代码更新到您的活动中

Button btEntrar = (Button) findViewById(R.id.btnSingIn);
 btEntrar.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent i;
        i = new Intent(login.this, MainActivity.class);
        startActivity(i);


    }
});

回答by Umair

try using

尝试使用

Intent i = new Intent(login.this, mainActivity.class);

hope this helps

希望这可以帮助

回答by previousdeveloper

Did you add manifest.xml or try this code ?
Intent i = new Intent(login.this,mainActivity.class);

您是否添加了 manifest.xml 或尝试使用此代码?
Intent i = new Intent(login.this,mainActivity.class);