无法解析构造函数(Android Intent)

Posted

技术标签:

【中文标题】无法解析构造函数(Android Intent)【英文标题】:Cannot resolve constructor (Android Intent) 【发布时间】:2015-09-07 00:56:37 【问题描述】:

我正在尝试创建一个打开不同活动的简单按钮:

package com.example.xxx.buttonexample;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.Button;
import android.view.View;
import android.view.View.OnClickListener;

public class MainActivity extends Activity 

Button button;
@Override
public void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    btnClick();

public void btnClick() 
    button = (Button) findViewById(R.id.button1);
    button.setOnClickListener(new OnClickListener() 
        @Override
        public void onClick(View v)
        
            Intent intent = new Intent(this,emergencyIntent.class);
            startActivity(intent);
        
    );


这是我的 EmergencyIntent.class 文件:

package com.example.xxx.buttonexample;

import android.app.Activity;
import android.os.Bundle;

public class emergencyIntent extends Activity


@Override
public void onCreate(Bundle savedInstanceState)

    super.onCreate(savedInstanceState);
    // The activity is being created.



       

我收到一个错误:

"无法解析构造函数'intent(匿名 android.view.View.OnClickListener, java.lang.Class(com.example.xxx.buttonexample.emergencyIntent))'。

【问题讨论】:

【参考方案1】:

只需将第一个参数中的this 替换为MainActivity.this。喜欢:

 Intent intent = new Intent(MainActivity.this,emergencyIntent.class);

错误是因为您将其写入public void onClick(View v),其中“this”表示实现View.OnClickListener 的匿名类的实例。而 Intent 构造函数 Intent(Context context, Class<?> cls) 中的第一个参数需要 Activity 上下文。

【讨论】:

【参考方案2】:
    package com.example.xxx.buttonexample;

    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.widget.Button;
    import android.view.View;
    import android.view.View.OnClickListener;

    public class MainActivity extends Activity 

    Button button;
    @Override
    public void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        button = (Button) findViewById(R.id.button1);
        button.setOnClickListener(new OnClickListener() 
            @Override
            public void onClick(View v)
            
                Intent intent = new  Intent(MainActivity.this,emergencyIntent.class);
startActivity(intent);
//Or Intent intent = new  Intent(getApplicationContext(),emergencyIntent.class);

            
        );
    
    

【讨论】:

【参考方案3】:

包 com.example.xxx.buttonexample;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.Button;
import android.view.View;
import android.view.View.OnClickListener;

public class MainActivity extends Activity 

Button button;
@Override
public void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    button = (Button) findViewById(R.id.button1);
    button.setOnClickListener(new OnClickListener() 
        @Override
        public void onClick(View v)
        
            Intent intent = new  Intent(MainActivity.this,emergencyIntent.class);

开始活动(意图); //或者Intent intent = new Intent(getApplicationContext(),emergencyIntent.class);

        

);## 标题##

【讨论】:

以上是关于无法解析构造函数(Android Intent)的主要内容,如果未能解决你的问题,请参考以下文章

Android - 无法解析方法'onActivityResult(int,int,android.content.Intent)

无法解析构造函数 GoogleSignInOptions

InstantiationException:没有零参数构造函数?

Android笔记:intent

Android sdk 文件损坏

android studio自动完成:如何显示带参数的构造函数