博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android undefined intent constructor错误?
阅读量:6449 次
发布时间:2019-06-23

本文共 2656 字,大约阅读时间需要 8 分钟。

本文选自系列文章之一,本系列文章将为读者分享国外最优质的精彩问与答,供读者学习和了解国外最新技术。在Android中启动Service时出现“undefined intent constructor”的错误,怎么办?

我在Activity中尝试启动Service,但出现“undefined intent constructor”的报错信息。

MyService.java代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
public class MyService extends Service {
 
@Override
public IBinder onBind(Intent intent) {
    
return
null
;
}
 
public static boolean isInstanceCreated() {
      
return
instance !=
null
;
   
}
 
@Override
public void onCreate() {
    
Toast.makeText(
this
,
"My Service Created"
, Toast.LENGTH_LONG).show();
    
Log.d(TAG,
"onCreate"
);
 
     
instance =
this
;
}
 
@Override
public void onDestroy() {
    
Toast.makeText(
this
,
"My Service Stopped"
, Toast.LENGTH_LONG).show();
    
Log.d(TAG,
"onDestroy"
);
    
instance =
null
;
 
}
 
@Override
public void onStart(Intent intent, int startid) {
            
Toast.makeText(getBaseContext(),
"Service started"
,Toast.LENGTH_SHORT).show();
    
}
 
 
}

启动SampleService.java的代码如下:

1
2
3
4
5
6
7
8
9
  
public class SampleService extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
    
super
.onCreate(savedInstanceState);
    
setContentView(R.layout.grid_activity);
    
Intent myintent =
new
Intent(SampleService.
this
,MyService.
this
);
//Error show here..
    
startService(myintent);
      
}
 
}

在manifest file中设定service的初值如下:

1
<service android:enabled=
"true"
android:name=
"com.MyApp.MyService"
/>

请大家帮我解决这个错误。

(最佳答案)

你不应该使用Service.this,而应该按如下方法改变class:

1
Intent myintent =
new
Intent(SampleService.
this
,MyService.Class);

做如下调整:

1
Intent myintent =
new
Intent(SampleService.
this
,MyService.
this
);

变为:

1
2
Intent myintent =
new
Intent(SampleService.
this
,MyService.Class);
 
// first param is a context second param is a class in your case a MyServiceClass

你没有设置类似于Intent(SampleService, MyService)的构造函数,在intent constructor参数设定上出现错误。

1
2
3
4
5
6
7
8
9
10
public Intent (Context packageContext, Class<?> cls)
 
Added
in
API level 1
Create an intent
for
a specific component. All other fields (action, data, type, class) are
null
, though they can be modified later
with
explicit calls. This provides a convenient way to create an intent that is intended to execute a hard-coded class name, rather than relying on the system to find an appropriate class
for
you; see setComponent(ComponentName)
for
more information on the repercussions of
this
.
 
Parameters
packageContext  A Context of the application package implementing
this
class.
cls
 
The component class that is to be used
for
the intent.

原文链接:

文章选自社区,鉴于其内容对于开发者有所帮助,现将文章翻译于此,供大家参考及学习。9Tech将每日持续更新,读者可点击查看全部译文内容。同时,我们也招募志同道合的技术朋友共同翻译,造福大家!报名请发邮件至zhangqi_wj@cyou-inc.com。

来自:9Tech

转载于:https://www.cnblogs.com/aikongmeng/p/3697355.html

你可能感兴趣的文章
Linux 安装JDK
查看>>
JSONObject
查看>>
六.面向对象
查看>>
[Processing]点到线段的最小距离
查看>>
考研随笔2
查看>>
ubuntu Linux 操作系统安装与配置
查看>>
操作系统os常识
查看>>
乱码的情况
查看>>
虚拟机centos 同一个tomcat、不同端口访问不同的项目
查看>>
DHCP的工作原理
查看>>
在不花一分钱的情况下,如何验证你的创业想法是否可行?《转》
查看>>
Linux/Android 性能优化工具 perf
查看>>
learn go recursive
查看>>
对于double小数点后取两位
查看>>
HashMap的小试牛刀
查看>>
GitHub使用教程、注册与安装
查看>>
论以结果为导向
查看>>
蓝桥杯模拟五 蒜头君下棋
查看>>
CODE[VS] 1294 全排列
查看>>
<<The C Programming Language>>讀書筆記
查看>>