代码之家  ›  专栏  ›  技术社区  ›  Josh

另一个“不能做静态引用…”的问题

  •  1
  • Josh  · 技术社区  · 14 年前

    我正在尝试编写一个包含一些视图的活动、一个设置视图的fillView()方法(这不是静态的,因为它必须使用getContentResolver)和一个静态方法,该方法从游标中进行随机选择,然后运行fillView()方法。

    由于fillView不是静态的,pickRandom是静态的,所以我尝试初始化类的一个实例,但是现在它在instance.fillView()行上崩溃了;

    下面是示例代码。任何帮助都将不胜感激。也许有一个更简单的方法来完成我正在努力做的事情。

    谢谢, 乔希

    public class myView extends Activity implements OnClickListener {
    
    
    @Override 
       public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
    
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.myView);
    
    fillView();
    
        }
    
    
    public void fillView(){
    
        //creates views, runs cursor and applies results to the view created
    
    }
    
    public static void pickRandom() {   
    
    
              // runs cursor, picks random entry, next I want to apply the result to 
              //  view, so I run...
    
            myView v = new myView();
            v.fillView();
    
            }
    
    2 回复  |  直到 14 年前
        1
  •  5
  •   vakio    14 年前

    创建静态实例变量并在oncreate中设置:

    private static myView instance;
    

    创建()

    instance = this;
    

    静态pickrandom()

    instance.fillView();
    
        2
  •  0
  •   Vladimir Ivanov    14 年前

    在pickRandom中,您尝试创建类的新实例。相反,您应该执行以下操作:

    this.fillView();
    

    我看你的pickRandom static没什么用。

    但是,如果出于某种原因需要它,则可以传递对视图的引用,如下所示:

    public static void pickRandom(myView v) {   
    
    
      // runs cursor, picks random entry, next I want to apply the result to 
      //  view, so I run...
    
      v.fillView();
    
    }