Làm cách nào để hiển thị Toast trong Android?


446

Tôi có một thanh trượt có thể được kéo lên và sau đó nó hiển thị bản đồ. Tôi có thể di chuyển thanh trượt lên xuống để ẩn hoặc hiển thị bản đồ. Khi bản đồ ở phía trước, tôi có thể xử lý các sự kiện chạm trên bản đồ đó. Mỗi khi tôi chạm vào, một cái AsyncTasksẽ được kích hoạt, nó tải xuống một số dữ liệu và làm cho Toastnó hiển thị dữ liệu. Mặc dù tôi bắt đầu tác vụ trên sự kiện cảm ứng, không có bánh mì nướng nào được hiển thị, cho đến khi tôi đóng thanh trượt. Khi thanh trượt được đóng lại và bản đồ không được hiển thị nữa Toast.

Có ý kiến ​​gì không?

Bắt đầu nhiệm vụ

BIÊN TẬP:

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

onPostExecutelàm bánh mì nướng

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

Trong mới TestTask(this), đây là một tài liệu tham khảo MapOverlayvà không MapActivity, vì vậy đây là vấn đề.


1
bài đăng này đã được trả lời từ lâu, nhưng tôi nghĩ bình luận của tôi vẫn có thể giúp được ai đó. có thư viện được hình thành tốt liên quan đến Toast, kiểm tra nó: stackoverflow.com/a/18280418/1891118
Oleksii K.

2
Hầu như tất cả về Toast ... hướng dẫn đơn giản .... bấm vào đây
Thomas Daniel

Câu trả lời:


849

Để hiển thị Toast trong ứng dụng của bạn, hãy thử điều này:

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

Một vi dụ khac:

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

Chúng ta có thể định nghĩa hai hằng số trong thời gian:

int LENGTH_LONG Hiển thị chế độ xem hoặc thông báo văn bản trong một khoảng thời gian dài.

int LENGTH_SHORT Hiển thị chế độ xem hoặc thông báo văn bản trong một khoảng thời gian ngắn.

Tùy chỉnh bánh mì nướng của bạn

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();

3
@Elen, bạn cần bối cảnh Hoạt động để tạo TOASTS, không phải bối cảnh Ứng dụng.
Yousha Aleayoub

1
Trên thực tế, yêu cầu bối cảnh Hoạt động là không chính xác. TUY NHIÊN, việc nâng cốc để hoạt động bên ngoài các hoạt động (ví dụ như trong Dịch vụ hệ thống) yêu cầu quyền truy cập vào vòng lặp chính. Đăng giải pháp của tôi.
ChrisCM

7
Nếu bạn đặt nó bên trong một phương thức onClick, thay thế getActivity () bằng getBaseContext () làm việc cho tôi.
Edward

@ PhilipBelgrave-Herbert Thật không may liên kết của bạn không còn tốt nữa.
Ellen Spertus

4
Toast.makeText (MainActivity.this, tin nhắn, Toast.LENGTH_LONG) .show ();
Shahab Einabadi

83

Mở rộng hoạt động bằng cách baseadaptersử dụng này

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

hoặc nếu bạn đang sử dụng hoạt động hoặc mainactivity

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

1
không có những thứ như bộ điều hợp cơ sở hoặc hoạt động chính, bánh mì nướng chỉ hiển thị bằng cách chuyển ngữ cảnh ứng dụng tham số, tin nhắn, thời lượng dài / ngắn
Mahesh

47

Cú pháp

Toast.makeText(context, text, duration);

Giá trị tham số

bối cảnh

getApplicationContext() - Trả về bối cảnh cho tất cả các hoạt động đang chạy trong ứng dụng.

getBaseContext() - Nếu bạn muốn truy cập Bối cảnh từ một bối cảnh khác trong ứng dụng, bạn có thể truy cập.

getContext() - Trả về chế độ xem ngữ cảnh chỉ hoạt động hiện tại.

bản văn

text - Trả về "CHUINGI", Nếu không phải chuỗi, bạn có thể sử dụng kiểu truyền.

 (string)num   // type caste

thời lượng

Toast.LENGTH_SHORT - Độ trễ bánh mì nướng 2000 ms được xác định trước

Toast.LENGTH_LONG - Toast trì hoãn 3500 ms được xác định trước

milisecond - Toast trì hoãn người dùng xác định miliseconds (ví dụ: 4000)


Ví dụ 1

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

Ví dụ.2

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

Người dùng xác định độ trễ bánh mì 5000 mili giây.
Jay Patel

Giải thích tốt, nhưng bạn cần bối cảnh Hoạt động để tạo TOASTS, không phải bối cảnh Ứng dụng.
Yousha Aleayoub

Chà, tốt, một dàn diễn viên như (chuỗi) num vẫn chưa được giới thiệu cho Java. Hãy thử Integer.toString () hoặc tương tự.
Mostowski sụp đổ

2
thời lượng cài đặt là không thể đối với bánh mì nướng, chỉ có thời gian được xác định trước, LENGTH_SHORT & LENGTH_LONG .
Jorgesys

23

Bánh mì nướng trong Android

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

hoặc là

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

(LENGTH_SHORT và LENGTH_LONG đang hoạt động như các cờ boolean - có nghĩa là bạn không thể gửi bộ đếm thời gian nướng bánh mì đến milisecond, nhưng bạn cần sử dụng một trong hai tùy chọn đó)


6
Đọc tài liệu, bạn sẽ chỉ chọn Toast.LENGTH_SHORT hoặc Toast.LENGTH_LONG cho thời lượng tin nhắn.
Jorgesys

20

Bạn có thể tùy chỉnh tost của bạn:

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();

Hoặc cách chung:

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

1
Phải - đây là một số ví dụ từ các dự án thực tế trên GitHub - codota.com/android/methods/android.widget.Toast/show
drorw

15

Tôi đã thử một vài cái bánh mì nướng và đối với những người mà bánh mì nướng của họ đang cho họ thử

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

14

Có hai cách để làm điều đó.

Sử dụng tin nhắn Toastilt sẵn có

//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();

hoặc tạo một tùy chỉnh bằng cách cung cấp tệp bố cục tùy chỉnh

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

1
Giải thích tốt, nhưng bạn cần bối cảnh Hoạt động để tạo TOASTS, không phải bối cảnh Ứng dụng.
Yousha Aleayoub

Các tài liệu android đề cập cụ thể đến bối cảnh ứng dụng: "Phương thức này có ba tham số: Ngữ cảnh ứng dụng, tin nhắn văn bản và thời lượng cho bánh mì nướng. Nó trả về một đối tượng Toast được khởi tạo đúng cách."
lgunsch

9

Tôi đã chạy qua các câu trả lời ở đây, và bị thu hút bởi thực tế là dường như có ai đó chọc ngoáy, tin rằng bối cảnh Hoạt động là bắt buộc. Đây không phải là trường hợp. Tuy nhiên, yêu cầu là Toast được đăng từ sự kiện chính hoặc UI Thread. Vì vậy, làm cho điều này hoạt động bên ngoài bối cảnh hoạt động là một chút khó khăn. Dưới đây là một ví dụ sẽ hoạt động bên trong một dịch vụ hệ thống hoặc bất kỳ lớp tiềm năng nào cuối cùng được thừa hưởng từ đó 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();
            }
        });
    }
}

Lưu ý rằng chúng tôi không cần truy cập vào một phiên Activitybản để làm việc này. Hãy ngừng đề nghị đây là trường hợp! Nếu Activityđược yêu cầu, chữ ký phương thức sẽ không gọi cho a Context.


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

thay vì sử dụng "app.getBaseContext ()".

Bạn có thể thử sử dụng " getApplicationContext () " hoặc " getContext () ".

Nếu mã của bạn đang hoạt động thì bạn nên sử dụng "này" của "Activty.this".
Nếu mã của bạn bị phân mảnh thì bạn nên tìm "getActivity ()"


7

Nếu đó là mảnh vỡ,

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

6

Để hiển thị Toast, sử dụng mã sau:

Toast toast = new Toast(getApplicationContext());

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

toast.setDuration(Toast.LENGTH_LONG);

toast.show();

5
 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**

5

Cách đơn giản

toast("Your Message")

HOẶC LÀ

toast(R.string.some_message)

Chỉ cần thêm hai phương thức trong của bạn BaseActivity. Hoặc tạo mới BaseActivitynếu bạn chưa sử dụng.

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();
    }
}

và mở rộng tất cả các hoạt động của bạn bằng cách BaseActivity.

public class MainActivity extends BaseActivity

3

Cách đơn giản nhất! (Để hiển thị trong Hoạt động chính của bạn, thay thế Đối số đầu tiên cho hoạt động khác)

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

2

Điều này làm việc cho tôi:

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

2

nhập mô tả hình ảnh ở đây

Phải đọc: Ví dụ về bánh mì nướng Android

Cú pháp

Toast.makeText(context, text, duration);

Bạn có thể sử dụng getApplicationContext () hoặc getActivity () hoặc MainActivity.this (nếu Tên hoạt động là MainActivity)

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

hoặc là

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

2

Cách bắt đầu

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

1

Hiển thị bánh mì nướng từ dịch vụ

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();
            }
        });
    }
    //....
}

Bạn cũng có thể đặt showToastphương thức trong lớp Ứng dụng của mình và hiển thị bánh mì nướng từ bất cứ đâu.


1

Nếu bạn muốn viết một bánh mì nướng đơn giản trong hoạt động của bạn: Toast.makeText(getApplicationContext(),"Hello",Toast.LENGTH_SHORT).show();

1. Hiển thị TextView trong Toast: ---

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

2.Showing Image as Toast: -

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();

Bố trí 3.showing như bánh mì nướng: -

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();

** Nếu bạn muốn viết bánh mì nướng trong Async của mình thì: private Activity activity; private android.content.Context context; this.activity = activity; this.context = context; Toast.makeText(context, "Hello", Toast.LENGTH_SHORT).show();


1

Đây là một số khác:

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

Ở đâu 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>


1

Mảnh vỡ bên trong (onCreateView)

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

Lớp học bên trong (onCreate)

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.