Android Intent 无法解析构造函数

Posted

技术标签:

【中文标题】Android Intent 无法解析构造函数【英文标题】:Android Intent Cannot resolve constructor 【发布时间】:2013-12-13 01:24:39 【问题描述】:

我有一个扩展 Fragment 的类,还有一个扩展 Activity 的类。

我的 Fragment 工作正常,我在 Fragment 中的 Intent 代码是:

ImageButton button= (ImageButton) getView().findViewById(R.id.button);
    button.setOnClickListener(new View.OnClickListener() 
        @Override
        public void onClick(View v) 
            Intent myIntent = new Intent(MyFragment.this, MyClass.class);
            MyFragment.this.startActivity(myIntent);            
    );

我的班级 MyClass 代码是:

public class MyClass extends Activity 
    @Override
    public void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        // The activity is being created.
    

    @Override
    protected void onStart() 
        super.onStart();

        setContentView(R.layout.MyClass);
     

错误是:

Gradle: cannot find symbol constructor Intent(com.xxxx.xxxx.MyFragment,java.lang.Class<com.xxxx.xxxx.MyClass>)

我不知道我哪里出错了。

【问题讨论】:

【参考方案1】:

使用

Intent myIntent = new Intent(v.getContext(), MyClass.class);

 Intent myIntent = new Intent(MyFragment.this.getActivity(), MyClass.class);

开始一个新的活动。这是因为当您为应用程序的特定组件创建 Intent 时,您需要将 Application 或组件上下文作为第一个参数传递给 Intent 构造函数。

【讨论】:

Intent intent = new Intent(getApplicationContext(), myClass.class); 非常感谢。但是为什么这在主要的android资源中的任何地方都没有? @Kruger Brent 你应该问负责“主要android资源”的人。我不相信他们会阅读 ***,或者至少不会定期阅读。 这件事发生在我身上。我在回调块期间使用了新的 Intent 并指定了源类 this。这就是我出错的原因。【参考方案2】:

或者您可以简单地启动活动,如下所示;

startActivity( new Intent(currentactivity.this, Tostartactivity.class));

【讨论】:

“或者”?参考什么?我在这里看不到任何不那么简单的东西......【参考方案3】:

你可以使用这个:

Intent intent = new Intent(getApplicationContext(), ClassName.class);

【讨论】:

如果该活动正在扩展除AppCompatActivityActivity 之外的任何活动,则只有此解决方案有效。【参考方案4】:

使用.getActivity() 可以解决这个问题:

例如。

Intent i= new Intent(MainActivity.this.getActivity(), Next.class);
startActivity(i);

希望这会有所帮助。

干杯。

【讨论】:

【参考方案5】:

您不能使用Intent's Context 创建意图。所以你需要使用你的Fragment'sParent ActivityContext

Intent intent = new Intent(getActivity(),MyClass.class);

【讨论】:

【参考方案6】:

我的代码在 Activity 中出现了同样的错误,但在 Fragment 中没有。显示不同行的构造函数错误,如 new Intent(From.this, To.class) 和 new ArrayList 等。

通过关闭 Android Studio 并将存储库移动到其他位置并再次打开项目进行了修复。修复了问题。

似乎是 Android Studio 构建问题。

【讨论】:

【参考方案7】:

这对我有用

    ncharacters.setOnClickListener(new View.OnClickListener() 
        @Override
        public void onClick(View view) 
            Intent openncharacter = new Intent(getApplicationContext(),ncharacters.class);
            startActivity(openncharacter);
        
    );

【讨论】:

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

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

无法解析构造函数 GoogleSignInOptions

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

无法解析构造函数 ArrayAdapter

无法解析构造函数:“dojox.mobile.RoundRectCategory”

创建 ElasticSearchRepository 时出现 BeanCreationException - 无法解析匹配的构造函数