无法添加窗口 - 令牌null不适用于应用程序

ash*_*h.n 4 android dialog spinner android-asynctask layout-inflater

我试图从视图中的AsyncTask的onPostExecute()(A.xml)mainActivity中膨胀视图(B.xml)(其中有微调器)

MainActivity.class

protected void onPostExecute(String result) {
        LayoutInflater vi = (LayoutInflater) getApplicationContext()
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View v = vi.inflate(R.layout.B, null);
        branded_spinner = (Spinner) v.findViewById(R.id.Spinner01);

        adapter_branded = new ArrayAdapter<String>(**MainActivity.this**,
                android.R.layout.simple_spinner_item, Branded);
        adapter_branded.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        branded_spinner.setAdapter(adapter_branded);                        
        branded_spinner.setOnItemSelectedListener(**MainActivity.this**);
Run Code Online (Sandbox Code Playgroud)

}

它适用于4.0及以上版本

但是对于2.3.3我得到一个错误

11-30 15:28:55.492: E/AndroidRuntime(540): android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application
11-30 15:28:55.492: E/AndroidRuntime(540):  at android.view.ViewRoot.setView(ViewRoot.java:531)
11-30 15:28:55.492: E/AndroidRuntime(540):  at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177)
11-30 15:28:55.492: E/AndroidRuntime(540):  at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
Run Code Online (Sandbox Code Playgroud)

是的,我试图使用getApplicationContext(),但这仍然是相同的错误

我提到了

使用getApplication()作为上下文抛出"无法添加窗口 - 令牌null不适用于应用程序"的对话框

Android:ProgressDialog.show()与getApplicationContext崩溃

Android 1.6:"android.view.WindowManager $ BadTokenException:无法添加窗口 - 令牌null不适用于应用程序"

Evo*_*vos 6

好的,尝试使用这样的构造函数为您的vi变量:LayoutInflater vi = LayoutInflater.from(YourActivityName.this);