簡體   English   中英

Android中如何顯示Toast?

[英]How to display Toast in Android?

我有一個可以拉起的 slider 然后它顯示一個 map。我可以上下移動 slider 來隱藏或顯示 map。當 map 在前面時,我可以處理觸摸事件 88247786.3218 ,一個AsyncTask被啟動,它下載一些數據並制作一個顯示數據的Toast 雖然我在觸摸事件上啟動任務,但沒有顯示 toast,直到我關閉 slider。當 slider 關閉並且 map 不再顯示時, 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();

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

為了在您的應用程序中顯示Toast ,請嘗試以下操作:

Toast.makeText(getActivity(), (String)data.result, 
   Toast.LENGTH_LONG).show();

另一個例子:

Toast.makeText(getActivity(), "This is my Toast message!",
   Toast.LENGTH_LONG).show();

我們可以為持續時間定義兩個常量:

int LENGTH_LONG 長時間顯示視圖或文本通知。

int LENGTH_SHORT短時間內顯示視圖或文本通知。

定制你的吐司

LayoutInflater myInflater = LayoutInflater.from(this);
View view = myInflater.inflate(R.layout.your_custom_layout, null);
Toast mytoast = new Toast(this);
mytoast.setView(view);
mytoast.setDuration(Toast.LENGTH_LONG);
mytoast.show();

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

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

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

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

句法

Toast.makeText(context, text, duration);

參數值

語境

getApplicationContext() - 返回應用程序中運行的所有活動的上下文。

getBaseContext() - 如果您想從您可以訪問的應用程序內的另一個上下文訪問 Context。

getContext() - 僅返回當前正在運行的活動的上下文視圖。

文本

text - 返回 "STRING" ,如果不是字符串,您可以使用類型轉換。

 (string)num   // type caste

期間

Toast.LENGTH_SHORT - 預定義的 Toast 延遲 2000 毫秒

Toast.LENGTH_LONG - Toast 延遲 3500 ms 預定義

milisecond - Toast 延遲用戶定義的毫秒(例如 4000)


示例.1

Toast.makeText(getApplicationContext(), "STRING MESSAGE", Toast.LENGTH_LONG).show();

例 2

Toast.makeText(getApplicationContext(), "STRING MESSAGE", 5000).show();

在 Android 中敬酒

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

或者

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

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

您可以自定義您的 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();

我已經嘗試了幾種吐司,對於那些吐司給他們錯誤的人來說嘗試

Toast.makeText(getApplicationContext(), "google", Toast.LENGTH_LONG).show();

有兩種方法可以做到。

要么使用內置的 Toast 消息

//Toast shown for  short period of time 
Toast.makeText(getApplicationContext(), "Toast Message", Toast.LENGTH_SHORT).show();

//Toast shown for long period of time
Toast.makeText(getApplicationContext(), "Toast Message", Toast.LENGTH_LONG).show();

或通過提供自定義布局文件來定制一個

Toast myToast = new Toast(getApplicationContext());
myToast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
myToast.setDuration(Toast.LENGTH_LONG);
myToast.setView(myLayout);
myToast.show();

我在這里找到了答案,並被這樣一個事實所吸引:似乎有人在四處閑逛,認為需要 Activity 上下文。 不是這種情況。 但是,要求從主事件或 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

Toast.makeText(app.getBaseContext(),"your string",Toast.LENGTH_SHORT).show();

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

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

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

如果是碎片,

Toast.makeText(getActivity(), "this is my Toast message!!! =)",
                   Toast.LENGTH_LONG).show();

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

Toast toast = new Toast(getApplicationContext());

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

toast.setDuration(Toast.LENGTH_LONG);

toast.show();
 Toast toast=Toast.makeText(getApplicationContext(),"Hello", Toast.LENGTH_SHORT);
 toast.setGravity(Gravity.CENTER, 0, 0); // last two args are X and Y are used for setting position
 toast.setDuration(10000);//you can even use milliseconds to display toast
 toast.show();**//showing the toast is important**

簡單的方法

toast("Your Message")

或者

toast(R.string.some_message)

只需在BaseActivity添加兩個方法。 或者,如果您尚未使用,則創建新的BaseActivity

public class BaseActivity extends AppCompatActivity {
    public void toast(String msg) {
        Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
    }

    public void toast(@StringRes int msg) {
        Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
    }
}

並通過BaseActivity擴展您的所有活動。

public class MainActivity extends BaseActivity

在此處輸入圖片說明

必讀:Android Toast 示例

句法

Toast.makeText(context, text, duration);

您可以使用getApplicationContext()getActivity()MainActivity.this (如果活動名稱是 MainActivity)

Toast.makeText(getApplicationContext(),"Hi I am toast",Toast.LENGTH_LONG).show();

或者

Toast.makeText(MainActivity.this,"Hi I am Toast", Toast.LENGTH_LONG).show();

最簡單的方法! (要顯示在您的主要活動中,請將第一個參數替換為其他活動)

Button.setOnClickListener(new View.OnClickListener(){
    @Override
    public void onClick(View v){
        Toast.makeText(MainActivity.this,"Toast Message",Toast.LENGTH_SHORT).show();
    }
}

入門方式

Toast.makeText(this, "Hello World", Toast.LENGTH_SHORT).show();

這對我有用:

Toast.makeText(getBaseContext(), "your text here" , Toast.LENGTH_SHORT ).show();

這是另一個:

refreshBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(getBaseContext(),getText(R.string.refresh_btn_pushed),Toast.LENGTH_LONG).show();
            }
        });

Toast在哪里:

Toast.makeText(getBaseContext(),getText(R.string.refresh_btn_pushed),Toast.LENGTH_LONG).show();

strings.xml

<string name="refresh_btn_pushed">"Refresh was Clicked..."</string>

片段內部(onCreateView)

Toast.makeText(getActivity(), "your message" , Toast.LENGTH_LONG).show();

內部類 (onCreate)

Toast.makeText(myClassName.this, "your message" , Toast.LENGTH_LONG).show();

顯示來自服務的吐司

public class ServiceA extends Service {
    //....
    public void showToast(final String message) {
        Handler handler = new Handler(Looper.getMainLooper());
        handler.post(new Runnable() {

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

您還可以將showToast方法放在您的 Application 類中,並從任何地方顯示 toast。

如果你想在你的活動中寫一個簡單的 toast: Toast.makeText(getApplicationContext(),"Hello",Toast.LENGTH_SHORT).show();

1. 在 Toast 中顯示 TextView:---

TextView tv = new TextView(this); tv.setText("Hello!"); tv.setTextSize(30); tv.setTextColor(Color.RED); tv.setBackgroundColor(Color.YELLOW);

2.將圖像顯示為吐司:--

ImageView iv = new ImageView(this); iv.setImageResource(R.drawable.blonde); Toast t = new Toast(this); t.setView(iv); t.setDuration(Toast.LENGTH_LONG); t.show();

3.將布局顯示為吐司:--

LayoutInflater li = getLayoutInflater(); View view = li.inflate(R.layout.my_toast_layout,null,false); Toast t = new Toast(this); t.setView(view); t.setDuration(Toast.LENGTH_LONG); t.show();

** 如果你想在你的 Async 中寫 Toast 那么: private Activity activity; private android.content.Context context; this.activity = activity; this.context = context; Toast.makeText(context, "Hello", Toast.LENGTH_SHORT).show();

分機 function 和一些 kotlin 糖

fun Context.showToast(string: String){
    Toast.makeText(
        this, string,
        Toast.LENGTH_SHORT
    ).show()
}

用法:

來自活動: showToast("toast)

來自片段: requiredContext().showToast("toast)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM