2011-02-08 4 views
2

я реализую TabActivity так же, как это -Нужна помощь по TabActivity

http://blog.henriklarsentoft.com/2010/07/android-tabactivity-nested-activities/ 

Теперь проблема, у меня есть некоторые Spinner в деятельности. Когда я нажимаю, чтобы развернуть Spinner - возникло следующее исключение -

android.view.WindowManager$BadTokenException: Unable to add window -- token [email protected] is not valid; is your activity running? 

У кого-нибудь есть решение?

ответ

4

Ошибка может произойти из-за контекста вашего адаптера, попробуйте дать getParent() в качестве контекста адаптера вместо этого.

this ссылка поможет вам.

+0

Не работает. Я думаю, проблема возникает, когда создается окно счетчика. Попробуй еще догадаться. Спасибо, в любом случае. – Shaiful

+0

Ссылка содержит полезный контент. Я еще не тестирую. Но есть вопрос - для setContentView используется только прядильщик. и счетчик создан LayoutInflater. Но у меня уже есть макет, определенный в xml. И получить spinner путем findViewById. Я не знаю, что это сработает для меня. Но спасибо за помощь. – Shaiful

+0

@Shaiful Это не прядильщик, который установлен как контент, xml раздувается с помощью надувателя и устанавливается как контент. – syam

4

Проблема заключается в том, что с использованием «нормального» разметки макета, контекст, используемый для раздувания, является «этим», который является вложенной Деятельностью. К сожалению, активность, вложенная внутри вкладки (ActivityGroup), не может использоваться для отображения диалогов (я не совсем уверен, почему это так, но это создает исключение BadTokenException). Решение, которое я нашел наиболее приемлемым, - не использовать setContentView (int id), а скорее использовать явную инфляцию, используя getParent() в качестве Контекста. Например:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    View contentView = LayoutInflater.from(getParent()).inflate(R.layout.my_layout, null); 
    setContentView(contentView); 
} 
+0

Спасибо за очень приятное объяснение .. работал для меня .. спасибо большое. –

Смежные вопросы