问题描述
|
你好我是一位Android初学者,试图制作一个可以过滤多个动作的IntentFilter。不幸的是,当我开始使用
addAction
方法时,Eclipse抛出一个错误:
\“令牌\” addAction \“的语法错误,
此令牌后应有标识符\“
即使我已导入所需的文件。即使我不确定为什么其余的代码没有显示任何问题,这也可能是设置问题。
这是我的代码存根:
import android.content.Intent;
import android.content.Context;
import android.content.IntentFilter;
...
private Context mContext;
IntentFilter filter = new IntentFilter();
filter.addAction(\"android.intent.action.SCREEN_OFF\");
我又观察到一件事-输入“ filter”。没有任何显示,只有消息“ No Default Proposals \”
有谁能够帮助我?
解决方法
阅读您在问题中的注释(\“此行有多个标记-令牌上的语法错误”)\“,删除此令牌等),我仍然认为这是一个括号(或括号)不匹配的问题,不是让Eclipse理解代码,可能是另一种方法,请仔细检查所有文件,然后尝试删除大部分代码(只需将其复制到记事本中),直到缩小问题范围为止。
从开发指南(重点是我的):
意图过滤器是IntentFilter类的实例。但是,由于Android系统在启动该组件之前必须知道该组件的功能,因此通常不在Java代码中设置意图过滤器,而是在应用程序的清单文件(AndroidManifest.xml)中将其设置为元素。 (一个例外是通过调用Context.registerReceiver()动态注册的广播接收器的筛选器;它们被直接创建为IntentFilter对象。)
我将其添加到清单中:
<intent-filter android:label=\"@string/screen_off\">
<action android:name=\"android.intent.action.SCREEN_OFF\" />
<category android:name=\"android.intent.category.DEFAULT\" />
</intent-filter>
,您正在尝试在方法范围之外运行代码,这在Java中是非法的(除非是赋值)。如果将代码更改为
private Context mContext;
IntentFilter filter = new IntentFilter();
{
filter.addAction(\"android.intent.action.SCREEN_OFF\");
}
它将作为对象构造函数的一部分运行。