2012-09-07 2 views
0

내 앱에서 이전 토스트를 취소하고 새로운 토스트를 표시하고 싶습니다. 그러나 제대로 작동하지 않습니다.android 4.0 toast.cancel()이 잘 작동하지 않습니다.

       Handler postHandler = new Handler();  
         postHandler.post(new Runnable() { 
          @Override 
          public void run() { 

            if (toast != null) { 
             toast.cancel(); 
           toast.maketext(this,"new toast",Toast.LENGTH_LONG); 



            } 
            toast.show(); 

          } 
         }); 


       return false; 
      } 
     }); 

그러나 아무것도 표시되지 않습니다.

로그 캣을 보여줍니다 :

E/AndroidRuntime(6706): FATAL EXCEPTION: main 
E/AndroidRuntime(6706): java.lang.NullPointerException 
E/AndroidRuntime(6706):  at android.view.View.onAttachedToWindow(View.java:9533) 
E/AndroidRuntime(6706):  at android.view.View.dispatchAttachedToWindow(View.java:9786) 
E/AndroidRuntime(6706):  at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2198) 
E/AndroidRuntime(6706):  at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:957) 
E/AndroidRuntime(6706):  at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2453) 
E/AndroidRuntime(6706):  at android.os.Handler.dispatchMessage(Handler.java:99) 
E/AndroidRuntime(6706):  at android.os.Looper.loop(Looper.java:137) 
E/AndroidRuntime(6706):  at android.app.ActivityThread.main(ActivityThread.java:4424) 
E/AndroidRuntime(6706):  at java.lang.reflect.Method.invokeNative(Native Method) 
E/AndroidRuntime(6706):  at java.lang.reflect.Method.invoke(Method.java:511) 
E/AndroidRuntime(6706):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
E/AndroidRuntime(6706):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
E/AndroidRuntime(6706):  at dalvik.system.NativeStart.main(Native Method) 
W/ActivityManager( 183): Force finishing activity com.rk.youming/.Testsurfacevie 
+0

이 오류는 코드에서 발생합니까? – neworld

답변

0

코드는 진정한 의미하지 않습니다. 새 토스트를 참조하고 표시되기 전에 cancel()으로 시도하십시오. cancel()으로 원하면 이전 토스트를 참조하는 객체에서 호출해야합니다 (새 토큰이 아닌). 토스트가 null 인 경우 취소()하지 않으므로 (if) show()으로 시도하면 NPE에서 끝납니다.

+0

고마워요. 버튼을 클릭 할 때 토스트를 보여주고 다른 위치에 표시하고 싶습니다. 그래서 저는 옛 토스트를 취소하고 새 토스트를 보여주고 싶습니다. – user1643151

+0

토스트가 대기하고 있으므로 오래된 토스트를 취소해야하는 경우가 아니라면 새로운 토스트 만 표시하면됩니다. –

+0

나는 옛 것을 취소해야합니다. 다른 위치에서 건배해야합니다. – user1643151

관련 문제