[英]Toast not getting finished after pressing back button on android device?
我正在開發一個付費應用程序,該應用程序從onCreate()
方法啟動后會檢查許可證。 從服務器收到響應代碼后,隨后的回調方法allow()
, dontAllow()
和applicationError()
執行,其中包含不同的Toasts
。
現在我的問題是,每當任何Toasts
獲取生成的,如果突然我按設備的后退Button
的整理過的前Toast
那么Toast
卡在屏幕上。 僅當我從任務列表中刪除該應用程序時,它才能完成。
private class XYZLicenseCheckerCallback implements LicenseCheckerCallback {
@Override
public void allow(int reason) {
if(isFinishing()) {
return;
}
Toast.makeText(XyzActivity.this,"App purchase verified",Toast.LENGTH_SHORT).show();
System.out.println("allowed called"+reason);
}
@Override
public void dontAllow(int reason) {
if(isFinishing()) {
return;
}
displayResult(String.valueOf(reason));
stopService(serviceIntent);
Toast.makeText(XyzActivity.this,"App not licensed",Toast.LENGTH_SHORT).show();
System.out.println("don't allow called"+reason);
}
@Override
public void applicationError(int errorCode) {
if(isFinishing()) {
return;
}
Toast.makeText(XyzActivity2108.this,"Not able to verify the license,check your internet connection",Toast.LENGTH_SHORT).show();
// finish();
System.out.println("app error called"+errorCode);
}
}
這是我的onBackpressed()
方法
@Override
public void onBackPressed() {
finish();
}
請您幫忙嗎?
創建一個全局變量Toast toast;
為了顯示它使用
toast = Toast.makeText(getContext(), "Hello World", Toast.LENGTH_SHORT);
toast.show();
然后在背面按取消吐司。
@Override
public void onBackPressed() {
toast.cancel();
finish();
}
為什么不使用小吃店呢?
這是您的應用消息,而不是系統消息。
即使活動結束,您的吐司面包仍會顯示在屏幕上。 小吃吧沒有。
有關更多詳細信息,請參考stackoverflow的答案 。
即使您不想使用小吃欄。 從您的代碼看來,這似乎不是預期的行為。 可能導致該問題的原因是線程長時間運行 ,該線程仍與服務器連接,或者尚未完成 。 檢查觸發this(XYZLicenseCheckerCallback)的代碼是否正確執行,並且沒有使應用程序沒有響應。
注意 :與UI線程進行交互時,您必須格外注意。
在構造函數中傳遞上下文,並在此上下文中傳遞Toast
private class XYZLicenseCheckerCallback implements LicenseCheckerCallback {
Activity mActivity;
public XYZLicenseCheckerCallback (Activity mActivity){
this.mActivity= mActivity;
}
@Override
public void allow(int reason) {
if(isFinishing()) {
return;
}
Toast.makeText(mActivity,"App purchase verified",Toast.LENGTH_SHORT).show();
System.out.println("allowed called"+reason);
}
@Override
public void dontAllow(int reason) {
if(isFinishing()) {
return;
}
displayResult(String.valueOf(reason));
stopService(serviceIntent);
Toast.makeText(mActivity,"App not licensed",Toast.LENGTH_SHORT).show();
System.out.println("don't allow called"+reason);
}
@Override
public void applicationError(int errorCode) {
if(isFinishing()) {
return;
}
Toast.makeText(mActivity,"Not able to verify the license,check your internet connection",Toast.LENGTH_SHORT).show();
// finish();
System.out.println("app error called"+errorCode);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.