2011-04-27 5 views
1

XML에 이미있는 RelativeLayout을 토스트보기에 추가하려고합니다. 이것은 내 메인 UI 스레드가 아닙니다.Toastview를 편집하고 반환 할 때 OnClick이 충돌 함

@Override 
     public void onClick(View v) 
     { 
      mContext.setContentView(R.layout.toast_layout); 
      Drawable myImage; 

      Toast imageToast = new Toast(mContext); 

      final RelativeLayout toastLayout = (RelativeLayout) mContext.findViewById(R.id.relative_toast); 
      final ImageView myIv = (ImageView)toastLayout.findViewById(R.id.tImage); 
      final TextView nameText = (TextView)toastLayout.findViewById(R.id.tFriendName); 
      final TextView interestText = (TextView)toastLayout.findViewById(R.id.tInterests); 

      myImage = getImageDrawable(mContext, friend.getmPic(), "image.jpg"); 

      myIv.setImageDrawable(myImage); 

      nameText.setText("Name: " + friend.getmName() + 
          "\nID: " + friend.getmId()); 
      nameText.setPadding(10, 0, 0, 5); 
      nameText.setTextColor(Color.BLACK); 

      interestText.setText("Interests: " + friend.getmInterests()); 
      interestText.setTextColor(Color.BLACK); 

      toastLayout.setBackgroundColor(Color.LTGRAY); 
      toastLayout.setMinimumHeight(400); 
      toastLayout.setMinimumWidth(250); 
      toastLayout.setPadding(10, 10, 10, 10); 

      imageToast.setView(toastLayout); 
      imageToast.setDuration(Toast.LENGTH_LONG); 
      imageToast.show(); 
     } 

디버그는이 범위에서 복귀 할 때 충돌을 표시합니다.

로그 캣 :

04-27 00:15:56.091: ERROR/AndroidRuntime(586): FATAL EXCEPTION: main 
04-27 00:15:56.091: ERROR/AndroidRuntime(586): java.lang.IllegalArgumentException: View not attached to window manager 
04-27 00:15:56.091: ERROR/AndroidRuntime(586):  at android.view.WindowManagerImpl.findViewLocked(WindowManagerImpl.java:355) 
04-27 00:15:56.091: ERROR/AndroidRuntime(586):  at android.view.WindowManagerImpl.removeView(WindowManagerImpl.java:200) 
04-27 00:15:56.091: ERROR/AndroidRuntime(586):  at android.widget.Toast$TN.handleShow(Toast.java:370) 
04-27 00:15:56.091: ERROR/AndroidRuntime(586):  at android.widget.Toast$TN$1.run(Toast.java:302) 
04-27 00:15:56.091: ERROR/AndroidRuntime(586):  at android.os.Handler.handleCallback(Handler.java:587) 
04-27 00:15:56.091: ERROR/AndroidRuntime(586):  at android.os.Handler.dispatchMessage(Handler.java:92) 
04-27 00:15:56.091: ERROR/AndroidRuntime(586):  at android.os.Looper.loop(Looper.java:123) 
04-27 00:15:56.091: ERROR/AndroidRuntime(586):  at android.app.ActivityThread.main(ActivityThread.java:4627) 
04-27 00:15:56.091: ERROR/AndroidRuntime(586):  at java.lang.reflect.Method.invokeNative(Native Method) 
04-27 00:15:56.091: ERROR/AndroidRuntime(586):  at java.lang.reflect.Method.invoke(Method.java:521) 
04-27 00:15:56.091: ERROR/AndroidRuntime(586):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
04-27 00:15:56.091: ERROR/AndroidRuntime(586):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
04-27 00:15:56.091: ERROR/AndroidRuntime(586):  at dalvik.system.NativeStart.main(Native Method) 

은 내가하지 않을 것을 무슨 변화는 무엇입니까?

감사합니다. 다음 toast_layout_root이

LayoutInflater inflater = getLayoutInflater(); 
    View layout = inflater.inflate(R.layout.toast_layout, 
      (ViewGroup) findViewById(R.id.toast_layout_root)); 

입니다해야하는 위치 위에

답변

1

사용자 정의 토스트 레이아웃을 만들려고 노력하는 경우, 당신은 자신의 자원 XML 파일의 레이아웃에 대한 XML을 저장해야합니다 (예 : toast_layout.xml) 대답에 대한 언급 toast_layout.xml

의 루트 요소는

toast.setView(layout); 
+0

감사합니다. 여전히 동일한 예외가 발생합니다. "보기가 창 관리자에 연결되지 않았습니다." – SemperFly

관련 문제