两个可以说是一样的,但为什么第二个会报错
private OnClickListener listener2=new OnClickListener()
{
public void onClick(View v)
{
Intent intent=new Intent(MainActivity.this, ExampleService.class);//这样就对了
switch (v.getId())
{
case R.id.btnStartService:
startService(intent);
break;
case R.id.btnEndService:
stopService(intent);
break;
}

}
};
    private OnClickListener listener = new OnClickListener() {
     Intent intent = new Intent(MainActivity.this, ExampleService.class);//这样就错了
public void onClick(View v) {
switch(v.getId()) {
case R.id.btnStartService :
startService(intent);
break;
case R.id.btnEndService : 
stopService(intent);
break;
}
}
};

解决方案 »

  1.   

    发LogCat里面的出错提示详细信息上来。
      

  2.   

    肯定是错的,你第一个是按钮按了以后才跳,第二个加了监听器就跳,如果能执行,也是这Activity一进来就直接跳了。而且,在监听器中执行本来就不可以。
      

  3.   

    嗯,意思明白,但我这样理解:
    Intent intent = new Intent(MainActivity.this, ExampleService.class);是创建一个实例,
    第一个是按钮按了以后再实例化intent,第二个是先实例化intent,
    我想实例化对先按后按不影响吧,我现在认为 onClick开始执行才是跳转的开始,
    会不会是intent实例化里面有什么不知道的东西有影响。
      

  4.   


    private OnClickListener listener = new OnClickListener()
    {
    // 添加个LogCat试试,如下:
    // 当你点击按钮的时候,如果在LogCat打出enter,证明可以在Intent放置在这,
    // 否则,就会报Unable to instantiate activity ComponentInfo错误
    Log.i(TAG, "enter");
    Intent intent = new Intent(MainActivity.this, ExampleService.class);// 这样就错了 public void onClick(View v) 
    {
    switch (v.getId()) 
    {
    case R.id.btnStartService:
    startService(intent);
    break;
    case R.id.btnEndService:
    stopService(intent);
    break;
    }
    }
    };
      

  5.   

    第二个Intent intent = new Intent(MainActivity.this, ExampleService.class);在创建OnClickListener的时候就执行实例化了。而作为一个类的成员变量,是在初始化这个类的时侯执行, 你的MainActivity都还在初始化中,现在要用它,自然会报错。
      

  6.   

    LZ想先创建实例,在按钮的时候触发,完全可以在当前activity中定义一个全局变量
    public class test extends Activity {
        
    private Intent it = new Intent(test.this,coverTest.class);
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ......
    }}
      

  7.   

    第二个intent = new Intent(MainActivity.this, ExampleService.class)中MainActivity为null,你Log一下MainActivit.this是什么看看
      

  8.   


    首先感谢大家这么热心,这几天加班狠猛,学习Android的事得缓缓。
    其次我看了所有回复后,感觉这个好同志和wlianghe00似乎说到点上了,由于使用了内部类了吧,回去我试试把实例化放在全局来看看,如果此观点正确那全局也会报错的。似乎可以结帖勒
      

  9.   

    09-08 01:01:00.413: E/AndroidRuntime(335): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.zd.android/com.zd.android.ServiceActivity}: java.lang.NullPointerException嗯,也同样报错,信息也是说不能初始化的意思。呵呵