【问题标题】:Android Intent Cannot resolve constructorAndroid Intent 无法解析构造函数
【发布时间】: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>)

我不知道我哪里出错了。

【问题讨论】:

    标签: android android-intent


    【解决方案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资源”的人。我不相信他们会阅读 stackoverflow,或者至少不会定期阅读。
    • 这件事发生在我身上。我在回调块期间使用了新的 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);
                  }
              });
          

          【讨论】:

            猜你喜欢
            • 2015-09-07
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-05-29
            • 1970-01-01
            • 2015-05-05
            相关资源
            最近更新 更多