Я не уверен, почему у вас нулевой указатель, но это код, который я использую, чтобы сделать то же самое, и у меня нет проблем :). Небольшие различия в способе вызова сборщика мусора и проверки наличия экземпляра AdapterView / ViewGroup в представлении. Это оригинальная нить Я использовал для этого кода
@Override
protected void onDestroy()
{
super.onDestroy();
unbindDrawables(findViewById(R.id.top_layout));
System.gc();
}
private void unbindDrawables(View view)
{
if (view.getBackground() != null)
{
view.getBackground().setCallback(null);
}
if (view instanceof ViewGroup && !(view instanceof AdapterView))
{
for (int i = 0; i < ((ViewGroup) view).getChildCount(); i++)
{
unbindDrawables(((ViewGroup) view).getChildAt(i));
}
((ViewGroup) view).removeAllViews();
}
}