【问题标题】:Cannot find symbol class Intent找不到符号类 Intent
【发布时间】:2014-10-07 23:21:38
【问题描述】:

我是 android 开发和编码 java 和 xml 的新手。

但我正在学习本教程:

http://www.steventrigg.com/activities-and-the-action-bar-create-an-alarm-clock-in-android-tutorial-part-1/#comment-296

然后我在使用 Intent 时遇到了这个错误。 switch下“Intent”字样变红,出现错误“cannot find symbol class Intent”

有人可以向我解释发生了什么以及如何解决这个问题吗?

这是我在 AlarmListActivity.java 下的代码的最后一部分

@Override

public boolean onOptionsItemSelected(MenuItem item) {

   int id = item.getItemId();
   if (id == R.id.action_settings) {
       return true;
   }

   switch (item.getItemId()) {
       case R.id.action_add_new_alarm: {
           Intent intent = new Intent(this,
                   AlarmDetailsActivity.class);

            startActivity(intent);
            break;
        }
    }
    return super.onOptionsItemSelected(item);
}

【问题讨论】:

  • Intent 这个词在这里不是红色的,但在我的 java.xml 中是红色的。怎么了?我也有以下错误消息错误:任务':app:compileDebugJava'的执行失败。 > 编译失败;有关详细信息,请参阅编译器错误输出。这是什么?
  • 该错误消息不是错误。这只是一个通知,您无法使用现有错误编译您的类。

标签: java android android-intent


【解决方案1】:

再次查看您的 AlarmListActivity 并检查顶部的导入语句并确保它包含以下行:

import android.content.Intent;

如果您打算使用不属于java.lang 包的任何预先存在的类,您通常必须导入这些类。例如,Android Intent 是一个由 Android 开发团队编写的预构建类,它允许通知其他应用程序/活动。如果要使用Intent,则必须导入包含 Intent 的包。

当您编写new Intent() 时,编译器会看到您正在请求构造一个新对象,但由于在java.lang 包中找不到该对象,它需要知道在哪里寻找蓝图构建该对象。导入语句是该蓝图的位置。

我看了一下教程,以经验丰富的程序员的方式,作者似乎忽略了一些基本但重要的事情,例如使他的示例代码工作的导入语句。

【讨论】:

  • 非常感谢。我认为它正在工作。但是现在“Intent”和“AlarmDetailsActivity”这个词变成了黑色。他们应该是蓝色的吗?或者没关系?你能给我一个关于进口的简要说明吗?我多久需要导入一些东西?我怎么知道我是否需要导入一些东西以及写什么?我提到的错误也消失了,所以我认为它很好。
  • 查看tutorial 了解有关导入的更多信息。我没有仔细看它,但乍一看,它似乎涵盖了所有基础。如果此答案对您有所帮助,请单击它旁边的复选标记,以便将来看到此问题的人知道什么有效。如果您还有其他问题,请随时单独发布。
【解决方案2】:

通过了解 Android Studio 如何索引文件,我刚刚解决了同样的问题,如您所知,构建 Android 应用程序是一个非常复杂的过程。因此,Android Studio 有一些内部参考资料,它会随着您创建的每个文件的更改而不断更新。

我在寻找解决方案时到达了这个帖子,

这就是我遇到这个问题的原因

我通常不会在主项目包下创建活动,我会根据我使用的设计模式创建子包来组织文件,例如如果我的 APP 名称是 com.example.testingaravind 那么我通常在里面创建包例如活动,服务,模型,管理器等......所以今天我首先创建了一个活动,然后通过Android Studio将该活动移动到活动包中,我开始面临你所描述的同样问题,下面是我的源代码

    public class BootstrapActivity extends ActionBarActivity {

        private static final String TAG = "BootstrapActivity";

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

        public void startServiceOnClickHandler(View view) {

            Intent intent = new Intent(BootstrapActivity.this , AnalyzerService.class);
            startService(intent);
        }
}

在 startServiceOnClickHandler 方法中,它显示错误消息, “无法解析构造函数意图”我在谷歌搜索了很多,发现

当我将文件从一个包移动到另一个包时,我的清单文件不会更新,在清单中我们提到了活动名称及其包路径,在我的情况下应该是

   android:name=".activities.BootstrapActivity"

原来如此

   android:name=".BootstrapActivity"

因此,Android Studio 不知道活动文件夹中存在一个名为 BootstrapActivity 的类,

这似乎是 android studio 工作方式中的一个错误。当我将活动类文件从一个包移动到另一个包时,Android Studio 必须更新清单文件。

我发布这篇文章是为了帮助其他可能在这篇文章中遇到类似用例的人。

【讨论】:

  • 感谢您的回答。对我进一步了解android开发很有帮助。话虽这么说,我的问题实际上是一个简单的不导入意图。我刚开始学习android开发时遇到了这个问题。但是谢谢你的回答。它很有教育意义,将来会很有用。
猜你喜欢
  • 2017-10-01
  • 2018-09-28
  • 2019-03-24
  • 2015-03-21
  • 2018-08-09
  • 2014-06-23
  • 2017-05-07
  • 2021-08-23
  • 1970-01-01
相关资源
最近更新 更多