2012-07-19 31 views
0

我试图使大部分实用函数抽象化,所以我决定将它们分成一个名为Utils.java的新类(在Android应用程序包内部)。然而,我很难将活动上下文传递给这个辅助类,并在其辅助类的方法中运行一些系统的东西。通过传递活动上下文在外部类中的requestWindowFeature()

我有这种情况的主要活动的onCreate:

Utils u = new Utils(this); 
u.makeFullscreen(); 

Utils.java:

package mypackagenamehere; 

import android.content.Context; 
import android.view.Window; 
import android.view.WindowManager; 

public class Utils{ 
    Context context; 

    // Constructor 
    public Utils(Context c) { 
     context = c; 
    } 

    public void makeFullscreen(){ 
     context.requestWindowFeature(Window.FEATURE_NO_TITLE); 
     context.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
       WindowManager.LayoutParams.FLAG_FULLSCREEN); 
    } 

} 

的问题是与makeFullscreen()方法的内容。

+0

确保你已经叫'makeFullscreen'之前'setContentView',因为它是必须要求。你在这个方法中调用'requestWindowFeature'。 – 2012-07-19 19:05:58

回答

0

试试这个

Utils u = new Utils(YourActivityName.this); 

,并更好地做到这样

public stactic void makeFullscreen(Context context){ 
     context.requestWindowFeature(Window.FEATURE_NO_TITLE); 
     context.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
       WindowManager.LayoutParams.FLAG_FULLSCREEN); 
    } 

然后直接打电话

Utils.makeFullscreen(YourActivityName.this); 
+0

但事情是,我计划在makeFullscreen旁边加入其他方法。我需要能够只设置Activity上下文一次,最好是在构造函数中,然后为每个需要运行的方法调用Utils类的同一个实例,而无需将上下文传递给每个方法。 – 2012-07-19 18:09:01

+0

okey ...您是否尝试过传递'YourActivityName.this' – MAC 2012-07-19 18:10:58

+0

是的,我仍然无法在Eclipse中运行应用程序,因为此方法中有错误。 – 2012-07-19 18:47:38

相关问题