【问题标题】:requestWindowFeature() in External Class by Passing Activity Context通过传递活动上下文在外部类中的 requestWindowFeature()
【发布时间】:2012-07-19 18:03:43
【问题描述】:

我试图将大多数实用程序函数抽象化,因此我决定将它们分离到一个名为 Utils.java 的新类中(在 Android 应用程序包中)。

但是,我很难将活动上下文传递给这个助手类并在其(助手类的方法)中运行一些系统内容。

我在主要活动的 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() 方法的内容。

【问题讨论】:

  • 确保你在setContentView之前调用了makeFullscreen,因为这是必须的要求。因为你在那个方法中调用requestWindowFeature

标签: java android


【解决方案1】:

试试这个

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);

【讨论】:

  • 但问题是我计划在 makeFullscreen 之外包含其他方法。我需要能够只设置一次 Activity 上下文,最好是在构造函数中,然后为我需要运行的每个方法调用 Utils 类的相同实例,而不必将上下文传递给每个方法。
  • 是的,由于此方法出错,我仍然无法在 Eclipse 中运行应用程序。
猜你喜欢
  • 2020-10-26
  • 2023-03-04
  • 1970-01-01
  • 1970-01-01
  • 2022-12-09
  • 2013-01-28
  • 2012-04-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多