Android: WindowManager $ BadTockenException при нажатии Spinner - PullRequest
2 голосов
/ 12 января 2011

У меня есть блесна в моем классе.Когда я нажимаю на счетчик, процесс останавливается, показывая исключение, что 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];
      }

});

Stack

Thread [<1> main] (Приостановлено (исключение 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) line: недоступно [собственный метод]
Method.invoke (Object, Object ...) строка: 507
ZygoteInit $ MethodAndArgsCaller.run () строка: 839
ZygoteInit.main (String []) строка:597 NativeStart.main (String []) строка: недоступно [собственный метод]

Спасибо ....

1 Ответ

9 голосов
/ 12 января 2011

Ошибка может быть связана с 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);

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

...