2012-06-25 104 views
4

我試圖讓機器人當前正在運行的背景下當前正在運行的背景下,我試圖用:我怎樣才能在Android的

<application android:name="com.xyz.MyApplication"> 

</application> 

public class MyApplication extends Application 
{ 
    private static Context context; 

    public void onCreate() 
    { 
     super.onCreate(); 
     MyApplication.context = getApplicationContext(); 
    } 

    public static Context getAppContext() 
    { 
     return MyApplication.context; 
    } 
} 

當我在Alertbuilder嘗試使用MyApplication.getAppContext()他們給這個錯誤

AndroidRuntime(14421):android.view.WindowManager $ BadTokenException:無法添加窗口 - 令牌null不是一個應用程序

+0

只在創建對象時設置上下文,如果尚未創建應用程序,則靜態引用將返回null。 – cjk

+0

你是什麼意思「他們不能正常工作」?一些錯誤消息?一些意想不到的行爲,你可以多解釋一下?然後有人可以(並會)幫助你:) – basti

回答

13

這是爲我工作:

public class MyApplication extends Application { 

private static Context mContext; 

@Override 
public void onCreate() { 
    super.onCreate(); 
    mContext = getApplicationContext(); 
} 
public static Context getContext() { 
    return mContext; 
} 
} 

您只需在您的應用程序的任何部分撥打MyApplication.getContext()

我假設應用XML標籤上的manifest.xml

<application 
    android:name=".MyApplication" 
    android:icon="@drawable/icon" 
    android:label="@string/app_name" > 

你並不需要創建應用程序類的任何實例,當你啓動應用程序將創建它,前任何東西。

+0

謝謝你的回覆,但仍然無法正常工作,他們給我這個錯誤AndroidRuntime(14421):android.view.WindowManager $ BadTokenException:無法添加窗口 - 標記爲null不適用於應用程序 – nkarmi

+0

您可以發佈您的manifest.xml並查看軟件包名稱和應用程序類名稱嗎? – Goofyahead

0

如果你想獲得應用類,你可以用它獲得的情況下,

MyApplication Obj = ((MyApplication)getApplicationContext()); 

如果上下文然後getApplicationContext()本身是不夠的。