Android: WindowManager $ BadTockenException при нажатии Spinner

У меня в домашнем классе есть спиннер. Когда я нажимаю на счетчик, процесс перестает показывать исключение, что WindowManager $ BadTockenException перехвачен.

Я вызываю этот home.class из main.class, который расширяет ActivityGroup.

Если я просто запускаю только home.class, счетчик показывает все элементы. Но проблема только в вызове home.class из main.class.

Ниже приведен мой код. Скажите, пожалуйста, почему это произошло?

main.class

public class main extends ActivityGroup
{
  public void onCreate(Bundle savedInstanceState)
  {
      super.onCreate(savedInstanceState);
       Intent intent=new Intent(this,home.class);
       View view=getLocalActivityManager().startActivity("1", intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)).getDecorView();
       setContentView(view);
  }

}

home.class

String[] country={"Please selects","US","INDIA","UK"};
Spinner s2 = (Spinner) findViewById(R.id.spinnerCountry);
ArrayAdapter<CharSequence> adapterCountry=new ArrayAdapter(this,android.R.layout.simple_spinner_item,country);
adapterCountry.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
s2.setAdapter(adapterCountry);

s2.setOnItemSelectedListener(new OnItemSelectedListener()
{
     public void onItemSelected( AdapterView<?> parent, View view, int position, long id)
     {
            countryName=country[position];
     }

      public void onNothingSelected(AdapterView<?> parent)
     {
            countryName=country[0];
      }

});

Куча

Поток [‹1> основной] (Приостановлен (исключение WindowManager $ BadTokenException))
Строка AlertDialog (Dialog) .show (): 245
Строка AlertDialog $ Builder.show (): 802
Spinner.performClick ( ) строка: 260
Просмотр $ PerformClick.run () строка: 9080
ViewRoot (Обработчик) .handleCallback (Сообщение) строка: 587 ViewRoot (Обработчик) .dispatchMessage (Сообщение) строка: 92 Строка Looper.loop () : 123 ActivityThread.main (String []) строка: 3647
Method.invokeNative (Object, Object [], Class, Class [], Class, int, boolean) строка: недоступно [собственный метод]
Метод .invoke (Object, Object ...) строка: 507
ZygoteInit $ MethodAndArgsCaller.run () строка: 839
ZygoteInit.main (String []) строка: 597 NativeStart.main (String []) строка: недоступно [собственный метод]

Спасибо....


person Jomia    schedule 12.01.2011    source источник


Ответы (1)


Ошибка может быть связана с setContentView, указанным внутри вашего home.class.

Вместо setContentView(yourlayout);

давать,

View viewToLoad = LayoutInflater.from(this.getParent()).inflate(yourlayout, null);
this.setContentView(viewToLoad);  
Spinner s2 = (Spinner) viewToLoad.findViewById(R.id.spinnerCountry);

И дайте свой код счетчика как:

ArrayAdapter<CharSequence> adapterCountry=new ArrayAdapter(this.getParent(),android.R.layout.simple_spinner_item,country);
adapterCountry.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
s2.setAdapter(adapterCountry);

Поскольку вы используете группу действий, вы сталкиваетесь с этой проблемой. Надеюсь, это решение может вам помочь.

person Anju    schedule 12.01.2011
comment
человек, это спасло меня, также следует отметить, что вам все равно нужно передать getParent () в свои AlertDialogs и тому подобное ... Но это определенно устраняет проблему с Spinner ... - person emalamisura; 14.01.2012