定义了一个view类demoView,在activity的oncreat中实例化了一个对象demoView view1;在后面的方法中要用到view1就没办法引用了,因为view1是局部的,我将view1实例化改到方法外,想当全局变量一样,运行程序后出错强制关闭,这怎么办哪?

解决方案 »

  1.   

    我觉得应该不是这个问题,你最好能把报错的代码贴上来。你如果需要用到demoView的话,我的建议是:你将view类里面的方法定义为static的。在activity的oncreat中直接调用就可以了。
    希望能帮到你
      

  2.   

    不知道你的demoView定义在什么位置的
      

  3.   

    代码有点长,只能截部分了,我把界面和主要操作写字demoView里面了,一开始view1定义在onCreat里面的,正常实现了要做的功能,后来添加了菜单,单选框来增加了一些信息和选项,比如openDialogOption里面的对话框,里面就引用到view1的东西也需要根据选项进行设置,此时就遇到了上述问题,引用不到view1了。。将demoView view1 = new demoView(main.this);提到外面的话,编译没错误的,总是刚要运行程序就要强行关闭。
    public class main extends Activity {
     @Override 
        public void onCreate(Bundle savedInstanceState) 
        {
        demoView view1 = new demoView(main.this);         super.onCreate(savedInstanceState);
    setContentView(view1);
        }
    …… 
    ……
    private void openDialogOption() {
    // TODO Auto-generated method stub
    new AlertDialog.Builder(main.this)
    .setTitle("option")
    .setSingleChoiceItems(new String[] {"简单","中等","难"},view1.getMineCount(), new DialogInterface.OnClickListener(){ @Override
    public void onClick(DialogInterface dialog, int which) {
    // TODO Auto-generated method stub
    view1.setMineCount(which);
    dialog.dismiss();  
    view1.InitMapGround();
    view1.invalidate();
    setContentView(mine_view);
    view1.noticeStage();
    }

    })
    .setNegativeButton("取消",null)
    .show();
    }
    ……
    ……
    }
      

  4.   

    如果把view1定义在onCreate里面的话,这个对象的作用于只局限于onCreate这个方法,其他方法是无法访问这个对象的,你可以把view1的声明放在onCreate外面,再在onCreate内部实例化这个对象。public class main extends Activity {demoView view1 = null;@Override  
      public void onCreate(Bundle savedInstanceState)  
      {
      view1 = new demoView(main.this);super.onCreate(savedInstanceState);
    setContentView(view1);
      }
      

  5.   

    非常感谢,按照你的方法就OK了,能不能帮忙解释下,为什么实例化也在外面做,不在oncreat里面做,就会出现异常强行关闭呢
      

  6.   

    呵呵,具体我也不太清楚,没试过
    demoView view1 = new demoView(main.this);
    有可能因为里面用到的main.this此时还没有实例化的原因