我開發了一個android應用程序,我面臨的問題是Toast
。 假設我正在顯示一個Toast,它會顯示在應用程序窗口中。 當出現對話框時,烤麪包不會立即消失。如何取消Toast
我想知道如何取消敬酒。
我開發了一個android應用程序,我面臨的問題是Toast
。 假設我正在顯示一個Toast,它會顯示在應用程序窗口中。 當出現對話框時,烤麪包不會立即消失。如何取消Toast
我想知道如何取消敬酒。
您可以爲烤麪包指定的最短時間爲Toast.LENGTH_SHORT
,其值爲0
,但實際上爲2000 milliseconds long
。如果你想要比它短,那麼試試這個:
final Toast toast = Toast.makeText(ctx, "This message will disappear in 1 second", Toast.LENGTH_SHORT);
toast.show();
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
toast.cancel();
}
}, 1000); //specify delay here that is shorter than Toast.LENGTH_SHORT
使用tost:toast.cancel()的取消方法;
我認爲沒有必要創建一個自定義的烤麪包。
僅創建Toast
類的單個實例。我們只需使用toast.setText("string")
來設置烤麪包的文本,然後在onDestroy()
方法中調用toast.cancel()
方法。
工作的代碼片段如下:
package co.toast;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
public class ShowToastActivity extends Activity {
private Toast toast = null;
Button btnShowToast;
@SuppressLint("ShowToast")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// creates only one toast object..
toast = Toast.makeText(getApplicationContext(), "", Toast.LENGTH_LONG);
btnShowToast = (Button) findViewById(R.id.btnShowToast);
btnShowToast.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// only set text to toast object..
toast.setText("My toast!");
toast.show();
}
});
}
@Override
protected void onDestroy()
{
toast.cancel();
super.onDestroy();
}
@Override
protected void onStop() {
super.onStop();
toast.cancel();
}
}
希望這對您有所幫助..
這是使用Toast
的cancel()
方法一個基本的例子。
Toast mytoast;
mytoast = Toast.makeText(getApplicationContext(), "Hi Ho Jorgesys! ", Toast.LENGTH_LONG);
mytoast.show();
....
....
....
if(CancelToast){
mytoast.cancel();
}
好吧,我也正在嘗試取消敬酒,似乎並不能得到 取消()調用無論是在Activity.onDestroy(到被調用) 或Activity.onStop()等。在一些API文檔閱讀和 谷歌搜索其他需要獲取幫助獲取Toasts取消, 我想我仍然不清楚活動何時停止, 暫停,銷燬。我需要一種絕對的方式來強制我的活動 暫停或停止。
在我的具體情況,因爲只有短期和長期 時間敬酒,我決定來迭代循環5次,持續時間長麪包做 秀(),所以它會留在屏幕上 爲15-20秒。這工作正常!使用吐司對象 的
但是,其缺點(負面效應)是他們堅持,即使在用戶放棄您的應用程序和 回到主屏幕,並使用一些其他的應用程序啓動...您的 除非你可以保證你可以找到某個地方(某種方式)到 調用cancel(),否則你會在接下來的15-20秒內活着。另外,您必須相信Android會將 尊敬您的電話取消()!因此,爲此,我一直在調整我的簡單循環,試圖 在循環中調用取消,並向我自己證明它會致電取消調用,並在視覺上表現得如預期一樣。
代碼片段: 注:「敬酒」是一個公共實例變量,所以我們 有吐司對象只有一個實例[如上述 建議,以及一個評論者證實 正在兩年前,在活動onStop()和OnDestroy()]
toast = Toast.makeText(ctxt, result, Toast.LENGTH_LONG);
for (int i=0; i < 5; i++)
{
// Long-toasts each last about 3.5 secs
toast.show();
android.os.SystemClock.sleep(1500);
toast.cancel();
android.os.SystemClock.sleep(1500);
toast = Toast.makeText(ctxt, result, Toast.LENGTH_LONG);
}
好吧,原始循環只包含一行演出。 這是有效的,本身。
但是做實驗,我說那接下來的四線,約 一半通3.5秒顯示睡覺,然後取消它,又睡了 了一秒半,然後重新創建和顯示再次敬酒。
我期望看到的祝酒約1.5秒,然後看它消失, 而在另一個1.5秒回來,等
猜猜是什麼......乾杯永遠不會出現在所有!
好吧,我完全嘟嘟... ... ...我錯過了什麼,在 瞭解如何執行烤麪包類 和應該表現的內在奧祕?
回到我的第一個問題:如何最好地讓我的 活動進入暫停或停止狀態?
[注意:我很喜歡這個論壇,很棒!這是我第一次發帖 進入討論的中間...抱歉,我的回覆 被標記爲答案,而不是作爲與此主題相關的 的問題。 ]
Toast toast;
private void showToast(String text) {
if (toast!=null)
toast.cancel();
toast = Toast.makeText(context, text, Toast.LENGTH_SHORT);
toast.show();
}
備份@EboMike [在他的回答中說過](http://stackoverflow.com/a/4395089/383414),我已經成功地使用了我的'Boast.java`的最後一個要點幾年 - [Github上的Boast.java](https://gist.github.com/mobiRic/9786993) – 2016-08-16 20:55:25