2013-01-15 20 views
-1

我找到了this。所以,远没有运气。我用他的代码,但我无法通过这个错误..我不熟悉充气器。那么有人可以解释这段代码吗?创建透明传递活动

final WindowManager.LayoutParams params = new WindowManager.LayoutParams(
      WindowManager.LayoutParams.FLAG_FULLSCREEN, 
      WindowManager.LayoutParams.FLAG_FULLSCREEN, 
      WindowManager.LayoutParams.TYPE_SYSTEM_ALERT, 
      WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN, 
      PixelFormat.TRANSLUCENT); 

    WindowManager wm = (WindowManager) getApplicationContext() 
      .getSystemService(Context.WINDOW_SERVICE); 
    LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    ViewGroup mTopView = (ViewGroup) getApplicationContext() 
      .getLayoutInflater().inflate(R.layout.activity_invisible, null); 
    getWindow().setAttributes(params); 
    wm.addView(mTopView, params); 

的这部分代码:

ViewGroup mTopView = (ViewGroup) getApplicationContext() 
      .getLayoutInflater().inflate(R.layout.activity_invisible, null); 

给了我这个错误The method getLayoutInflater() is undefined for the type Context

有人能解释我做错了吗?

+0

你在哪里尝试执行此代码? –

+0

'onCreate()'方法本身。 –

+0

可能是因为上下文中没有getLayoutInflater()方法。尝试使用您的活动,例如。或者像上面那样,getSystemService – njzk2

回答

1

getLayoutInflater()Activity中的方法,而不是Context

您必须使用一个Activity的实例来调用它,否则它将无法工作。

但是,您可以使用在错误之前的行上创建的LayoutInflater inflater。喜欢的东西:

ViewGroup mTopView = (ViewGroup) inflater.inflate(R.layout.activity_invisible, null); 
+0

事情是我在我的问题中发布的链接使用应用程序上下文。或者,我想。你能检查一下吗?因为他的代码是'ViewGroup mTopView =(ViewGroup)App.inflater.inflate(R.layout.main,null);' 'App'究竟是什么? –

+0

应用程序可能是他的应用程序类的名称。 'inflater'很可能是他在Application类的onCreate()中初始化的静态LayoutInflater对象。 –

0

如果你想,而不是

ViewGroup mTopView = (ViewGroup) getApplicationContext().getLayoutInflater().inflate(R.layout.activity_invisible, null); 

执行内部onCreate()这个代码,尽量

ViewGroup mTopView = (ViewGroup) getLayoutInflater().inflate(R.layout.activity_invisible, null); 

您的活动有getLayoutInflater()方法,所以没有必要明确获取上下文。