如何在Android中顯示Toast?


Answers

使用baseadapter擴展活動使用了這個

Toast.makeText(getActivity(), 
    "Your Message", Toast.LENGTH_LONG).show();

或者如果您正在使用活動或mainactivity活動

Toast.makeText(MainActivity.this, 
    "Your Message", Toast.LENGTH_LONG).show();
Question

我有一個可以拉起來的滑塊,然後顯示一張地圖。 我可以上下移動滑塊以隱藏或顯示地圖。 當地圖在前面時,我可以在該地圖上處理觸摸事件。 每次我觸摸,一個AsyncTask就會啟動,它下載一些數據並製作一個Toast來顯示數據。 儘管我在觸摸事件中啟動任務,但沒有顯示烤麵包,直到我關閉滑塊。 當滑塊關閉並且地圖不再顯示時,會出現Toast

有任何想法嗎?

那麼開始這個任務吧

編輯:

public boolean onTouchEvent(MotionEvent event, MapView mapView){ 
    if (event.getAction() == 1) {
        new TestTask(this).execute();
        return true;            
    }else{
        return false;
    }
 }

並在onPostExecute做一個敬酒

Toast.makeText(app.getBaseContext(),(String)data.result, 
                Toast.LENGTH_SHORT).show();

在新的TestTask(this) ,這是對MapOverlay的引用,而不是對MapActivity的引用,所以這是問題所在。




要顯示Toast,請使用以下代碼:

Toast toast = new Toast(getApplicationContext());

toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);

toast.setDuration(Toast.LENGTH_LONG);

toast.show();



Toast.makeText(app.getBaseContext(),String)data.result,Toast.LENGTH_SHORT).show();

而不是使用“app.getBaseContext()”。

您可以嘗試使用“ getApplicationContext() ”或“ getContext() ”。

如果你的代碼處於活動狀態,那麼你應該使用“Activty.this”的“this”。
如果你的代碼在片段中,那麼你應該去“getActivity()”




我在這裡遇到了答案,並被似乎有人在旁邊徘徊,並認為需要活動環境的事實所吸引。 不是這種情況。 但是,要求從主事件或UI線程發布Toast。 所以,讓它在一個活動環境之外工作是有點棘手的。 下面是一個可以在系統服務內部工作的例子,或者任何最終從Context繼承的潛在類。

public class MyService extends AccessibilityService {

    public void postToastMessage(final String message) {
        Handler handler = new Handler(Looper.getMainLooper());

        handler.post(new Runnable() {

            @Override
            public void run() {
                Toast.makeText(getApplicationContext(), message, Toast.LENGTH_LONG).show();
            }
        });
    }
}

請注意,我們不需要訪問Activity的實例就可以工作。 請停止暗示這是事實! 如果需要Activity ,方法簽名將不會調用Context




您可以自定義您的tost:

LayoutInflater mInflater=LayoutInflater.from(this);

View view=mInflater.inflate(R.layout.your_layout_file,null);
Toast toast=new Toast(this);
toast.setView(view);
toast.setDuration(Toast.LENGTH_LONG);
toast.show();

或一般方式:

Toast.makeText(context,"Your message.", Toast.LENGTH_LONG).show();



在Android上敬酒

Toast.makeText(MainActivity.this, "YOUR MESSAGE", LENGTH_SHORT).show();

要么

Toast.makeText(MainActivity.this, "YOUR MESSAGE", LENGTH_LONG).show();

(LENGTH_SHORT和LENGTH_LONG充當布爾標誌 - 這意味著你不能發送吐司計時器到毫秒,但你需要使用這兩個選項中的任何一個)




Links