import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;

public class CLMassage extends Activity {
    String [] items = {"lorem", "qwkelmf", "qwefqwe", "qwenwewk", "fklmqwef", 
      "fklwmeflkq", "qwekfmqwwxc", "znwwer", "dfqeionr", "znfw"
    };
 
 EditText etAddGroup;
 Button bAddGroup;
 Spinner sRemoveGroup;
 Button bRemoveGroup;
 
 @Override
 public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.group_create);
        
        etAddGroup = (EditText)findViewById( R.id.etAddGroup );  // 추가 EditText 
        bAddGroup = (Button)findViewById( R.id.bAddGroup );   // 추가 버튼
        
        sRemoveGroup = (Spinner)findViewById( R.id.spinner ); // 삭제 spinner
        bRemoveGroup = (Button)findViewById( R.id.bRemoveGroup ); // 삭제 버튼
        
//  // spinner 안의 내용 표시에 대한 설정
  sRemoveGroup.setPrompt("삭제할 그룹을 선택하세요");
  ArrayAdapter<String> sAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, items);
  sAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
  sRemoveGroup.setAdapter(sAdapter);
  
 }
}






위와 같은 매우 평범한 spinner 입니다.

아래와 같이 나오긴 하나, spinner를 클릭하면 에러가 발생하네요.

10-26 23:26:09.205: ERROR/AndroidRuntime(2898): android.view.WindowManager$BadTokenException: Unable to add window -- token android.app.LocalActivityManager$LocalActivityRecord@43be84b8 is not valid; is your activity running?
10-26 23:26:09.205: ERROR/AndroidRuntime(2898):     at android.view.ViewRoot.setView(ViewRoot.java:468)
10-26 23:26:09.205: ERROR/AndroidRuntime(2898):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177)
10-26 23:26:09.205: ERROR/AndroidRuntime(2898):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
10-26 23:26:09.205: ERROR/AndroidRuntime(2898):     at android.view.Window$LocalWindowManager.addView(Window.java:424)
10-26 23:26:09.205: ERROR/AndroidRuntime(2898):     at android.app.Dialog.show(Dialog.java:239)
10-26 23:26:09.205: ERROR/AndroidRuntime(2898):     at android.app.AlertDialog$Builder.show(AlertDialog.java:802)
10-26 23:26:09.205: ERROR/AndroidRuntime(2898):     at android.widget.Spinner.performClick(Spinner.java:257)
10-26 23:26:09.205: ERROR/AndroidRuntime(2898):     at android.view.View.onTouchEvent(View.java:4179)
10-26 23:26:09.205: ERROR/AndroidRuntime(2898):     at android.view.View.dispatchTouchEvent(View.java:3709)
10-26 23:26:09.205: ERROR/AndroidRuntime(2898):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:852)
10-26 23:26:09.205: ERROR/AndroidRuntime(2898):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
10-26 23:26:09.205: ERROR/AndroidRuntime(2898):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
10-26 23:26:09.205: ERROR/AndroidRuntime(2898):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
10-26 23:26:09.205: ERROR/AndroidRuntime(2898):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
10-26 23:26:09.205: ERROR/AndroidRuntime(2898):     at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1659)
10-26 23:26:09.205: ERROR/AndroidRuntime(2898):     at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1107)
10-26 23:26:09.205: ERROR/AndroidRuntime(2898):     at android.app.Activity.dispatchTouchEvent(Activity.java:2061)
10-26 23:26:09.205: ERROR/AndroidRuntime(2898):     at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1643)
10-26 23:26:09.205: ERROR/AndroidRuntime(2898):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
10-26 23:26:09.205: ERROR/AndroidRuntime(2898):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
10-26 23:26:09.205: ERROR/AndroidRuntime(2898):     at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1659)
10-26 23:26:09.205: ERROR/AndroidRuntime(2898):     at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1107)
10-26 23:26:09.205: ERROR/AndroidRuntime(2898):     at android.app.Activity.dispatchTouchEvent(Activity.java:2061)
10-26 23:26:09.205: ERROR/AndroidRuntime(2898):     at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1643)
10-26 23:26:09.205: ERROR/AndroidRuntime(2898):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
10-26 23:26:09.205: ERROR/AndroidRuntime(2898):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
10-26 23:26:09.205: ERROR/AndroidRuntime(2898):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
10-26 23:26:09.205: ERROR/AndroidRuntime(2898):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
10-26 23:26:09.205: ERROR/AndroidRuntime(2898):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
10-26 23:26:09.205: ERROR/AndroidRuntime(2898):     at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1659)
10-26 23:26:09.205: ERROR/AndroidRuntime(2898):     at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1107)
10-26 23:26:09.205: ERROR/AndroidRuntime(2898):     at android.app.Activity.dispatchTouchEvent(Activity.java:2061)
10-26 23:26:09.205: ERROR/AndroidRuntime(2898):     at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1643)
10-26 23:26:09.205: ERROR/AndroidRuntime(2898):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1691)
10-26 23:26:09.205: ERROR/AndroidRuntime(2898):     at android.os.Handler.dispatchMessage(Handler.java:99)
10-26 23:26:09.205: ERROR/AndroidRuntime(2898):     at android.os.Looper.loop(Looper.java:123)
10-26 23:26:09.205: ERROR/AndroidRuntime(2898):     at android.app.ActivityThread.main(ActivityThread.java:4363)
10-26 23:26:09.205: ERROR/AndroidRuntime(2898):     at java.lang.reflect.Method.invokeNative(Native Method)
10-26 23:26:09.205: ERROR/AndroidRuntime(2898):     at java.lang.reflect.Method.invoke(Method.java:521)
10-26 23:26:09.205: ERROR/AndroidRuntime(2898):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
10-26 23:26:09.205: ERROR/AndroidRuntime(2898):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
10-26 23:26:09.205: ERROR/AndroidRuntime(2898):     at dalvik.system.NativeStart.main(Native Method)


에러 메시지가 이렇게 나오네요.

왜 이런 상황이 나오게 되었냐면.

일반적으로 탭화면 중에 한 탭에서 spinner가 보여지는 것은 정상 작동합니다.

하지만 탭화면 중에 한 탭에서 다른 activity로 들어가고 또 다른 activity에 들어간 후에 위의 똑같은 소스를 테스트해보면 위와 같은 에러 메시지가 뜨네요. 에러가 뭔지 표시를 해주지 않아서 답답하네요.


  ArrayAdapter<String> sAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, items);

이 부분의 this를 getParent()나 CLMassage.this 와 같이 넣어주었는데도 마찬가지네요. 이유가 뭘까요?? this 부분이 계속 마음에 걸리는데 감이 안잡히네요.