खोज…


परिचय

एक टोस्ट एक छोटे से पॉपअप में एक ऑपरेशन के बारे में सरल प्रतिक्रिया प्रदान करता है और एक टाइमआउट के बाद स्वचालित रूप से गायब हो जाता है। यह केवल संदेश के लिए आवश्यक स्थान की मात्रा को भरता है और वर्तमान गतिविधि दृश्यमान और इंटरैक्टिव रहती है।

वाक्य - विन्यास

  • टोस्ट मेक टेक्ट (संदर्भ संदर्भ, चार पाठ, अंतर अवधि)
  • टोस्ट मेक टेक्स्ट (संदर्भ, इंट रेसिड, इंट अवधि)
  • शून्य सेटगैविटी
  • शून्य दिखाना ()

पैरामीटर

पैरामीटर विवरण
प्रसंग अपने टोस्ट को प्रदर्शित करने के लिए संदर्भ। this आमतौर पर एक गतिविधि में उपयोग किया जाता है और getActivity() आमतौर पर एक टुकड़े में प्रयोग किया जाता है
टेक्स्ट एक चरस जो निर्दिष्ट करता है कि टोस्ट में कौन सा पाठ दिखाया जाएगा। कोई भी वस्तु जो CharSequence को लागू करती है, जिसका उपयोग String सहित किया जा सकता है
Resid एक संसाधन आईडी जिसका उपयोग टोस्ट में प्रदर्शित करने के लिए संसाधन स्ट्रिंग प्रदान करने के लिए किया जा सकता है
अवधि इंटागर ध्वज दर्शाता है कि टोस्ट कब तक दिखाएगा। विकल्प Toast.LENGTH_SHORT और Toast.LENGTH_LONG
गुरुत्वाकर्षण पूर्णांक, टोस्ट की स्थिति या "गुरुत्वाकर्षण" को निर्दिष्ट करता है। यहां विकल्प देखें
xOffset टोस्ट स्थिति के लिए क्षैतिज ऑफसेट निर्दिष्ट करता है
yOffset टोस्ट स्थिति के लिए ऊर्ध्वाधर ऑफसेट निर्दिष्ट करता है

टिप्पणियों

एक टोस्ट एक छोटे से पॉपअप में एक ऑपरेशन के बारे में सरल प्रतिक्रिया प्रदान करता है। यह केवल संदेश के लिए आवश्यक स्थान की मात्रा को भरता है और वर्तमान गतिविधि दृश्यमान और इंटरैक्टिव रहती है।

टोस्ट का एक और हालिया विकल्प स्नैकबार है। SnackBar एक अद्यतन दृश्य शैली प्रदान करता है और उपयोगकर्ता को संदेश को खारिज करने या आगे की कार्रवाई करने की अनुमति देता है। विवरण के लिए स्नैकबार प्रलेखन देखें।

आधिकारिक दस्तावेज:

https://developer.android.com/reference/android/widget/Toast.html

एक टोस्ट की स्थिति निर्धारित करें

क्षैतिज केंद्र में संरेखित स्क्रीन के निचले भाग में एक मानक टोस्ट अधिसूचना दिखाई देती है। आप इस स्थिति को setGravity(int, int, int) साथ बदल सकते हैं। यह तीन मापदंडों को स्वीकार करता है: एक गुरुत्वाकर्षण स्थिरांक, एक एक्स-स्थिति ऑफसेट और एक वाई-स्थिति ऑफसेट।

उदाहरण के लिए, यदि आप तय करते हैं कि टोस्ट ऊपरी-बाएँ कोने में दिखाई दे, तो आप इस तरह गुरुत्वाकर्षण सेट कर सकते हैं:

toast.setGravity(Gravity.TOP|Gravity.LEFT, 0, 0);

एक टोस्ट संदेश दिखा रहा है

एंड्रॉइड में, एक टोस्ट एक सरल यूआई तत्व है जिसका उपयोग किसी उपयोगकर्ता को प्रासंगिक प्रतिक्रिया देने के लिए किया जा सकता है।

एक सरल टोस्ट संदेश प्रदर्शित करने के लिए, हम निम्नलिखित कार्य कर सकते हैं।

// Declare the parameters to use for the Toast

Context context = getApplicationContext(); 
// in an Activity, you may also use "this"
// in a fragment, you can use getActivity()

CharSequence message = "I'm an Android Toast!";
int duration = Toast.LENGTH_LONG; // Toast.LENGTH_SHORT is the other option

// Create the Toast object, and show it!
Toast myToast = Toast.makeText(context, message, duration);
myToast.show();

या, एक टोस्ट इनलाइन दिखाने के लिए, टोस्ट ऑब्जेक्ट पर पकड़ के बिना:

Toast.makeText(context, "Ding! Your Toast is ready.", Toast.LENGTH_SHORT).show();

महत्वपूर्ण: सुनिश्चित करें कि show() विधि UI थ्रेड से कहा जाता है। यदि आप एक अलग धागे से Toast दिखाने की कोशिश कर रहे हैं, तो आप किसी Activity runOnUiThread विधि का उपयोग कर सकते हैं।

ऐसा करने में असफल, जिसका अर्थ है कि एक टोस्ट बनाकर यूआई को संशोधित करने की कोशिश करना, एक RuntimeException को फेंक देगा जो इस तरह दिखेगा:

java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()

इस अपवाद को संभालने का सबसे सरल तरीका सिर्फ runOnUiThread का उपयोग करके है: वाक्यविन्यास नीचे दिखाया गया है।

   runOnUiThread(new Runnable() {
        @Override
        public void run() {
            // Your code here
        }
    });

एक कस्टम टोस्ट बनाना

यदि आप डिफ़ॉल्ट टोस्ट दृश्य का उपयोग नहीं करना चाहते हैं, तो आप Toast ऑब्जेक्ट पर सेट setView(View) विधि का उपयोग करके अपना स्वयं का प्रदान कर सकते हैं।

सबसे पहले, XML लेआउट बनाएं जिसे आप अपने टोस्ट में उपयोग करना चाहते हैं।

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/toast_layout_root"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="8dp"
    android:background="#111">

    <TextView android:id="@+id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#FFF"/>

    <TextView android:id="@+id/description"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#FFF"/>

</LinearLayout>

फिर, अपना टोस्ट बनाते समय, XML से अपने कस्टम दृश्य को setView , और setView कॉल करें

// Inflate the custom view from XML
LayoutInflater inflater = getLayoutInflater();
View layout = inflater.inflate(R.layout.custom_toast_layout,
                               (ViewGroup) findViewById(R.id.toast_layout_root));

// Set the title and description TextViews from our custom layout
TextView title = (TextView) layout.findViewById(R.id.title);
title.setText("Toast Title");

TextView description = (TextView) layout.findViewById(R.id.description);
description.setText("Toast Description");

// Create and show the Toast object

Toast toast = new Toast(getApplicationContext());
toast.setGravity(Gravity.CENTER, 0, 0);
toast.setDuration(Toast.LENGTH_LONG);
toast.setView(layout);
toast.show();

टोस्ट प्रदर्शित करने का सुरक्षित तरीका (एप्लीकेशन वाइड)

public class MainApplication extends Application {
    
    private static Context context; //application context

    private Handler mainThreadHandler;
    private Toast toast;

    public Handler getMainThreadHandler() {
        if (mainThreadHandler == null) {
            mainThreadHandler = new Handler(Looper.getMainLooper());
        }
        return mainThreadHandler;
    }

    @Override public void onCreate() {
        super.onCreate();
        context = this;
    }
       
    public static MainApplication getApp(){
        return (MainApplication) context;
    }

    /**
     * Thread safe way of displaying toast.
     * @param message
     * @param duration
     */
    public void showToast(final String message, final int duration) {
        getMainThreadHandler().post(new Runnable() {
            @Override
            public void run() {
                if (!TextUtils.isEmpty(message)) {
                    if (toast != null) {
                        toast.cancel(); //dismiss current toast if visible
                        toast.setText(message);
                    } else {
                        toast = Toast.makeText(App.this, message, duration);
                    }
                    toast.show();
                }
            }
        });
    }

manifest में MainApplication जोड़ना याद रखें।

अब इसे टोस्ट संदेश प्रदर्शित करने के लिए किसी भी थ्रेड से कॉल करें।

MainApplication.getApp().showToast("Some message", Toast.LENGTH_LONG);

सॉफ्ट कीबोर्ड के ऊपर टोस्ट संदेश दिखाएं

डिफ़ॉल्ट रूप से, एंड्रॉइड स्क्रीन के निचले भाग में टोस्ट संदेश प्रदर्शित करेगा भले ही कीबोर्ड दिखा रहा हो। यह कीबोर्ड के ठीक ऊपर एक टोस्ट संदेश दिखाएगा।

public void showMessage(final String message, final int length) {
    View root = findViewById(android.R.id.content);
    Toast toast = Toast.makeText(this, message, length);
    int yOffset = Math.max(0, root.getHeight() - toast.getYOffset());
    toast.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL, 0, yOffset);
    toast.show();
}

एक टोस्ट संदेश प्रदर्शित करने का सुरक्षित तरीका (AsyncTask के लिए)

यदि आप एप्लिकेशन का विस्तार नहीं करना चाहते हैं और अपने टोस्ट संदेशों को सुरक्षित रखना चाहते हैं, तो सुनिश्चित करें कि आप उन्हें अपने AsyncS मुखौटे के पोस्ट निष्पादित अनुभाग में दिखाते हैं।

public class MyAsyncTask extends AsyncTask <Void, Void, Void> {

    @Override
    protected Void doInBackground(Void... params) {
        // Do your background work here
    }

    @Override
    protected void onPostExecute(Void aVoid) {
        // Show toast messages here
        Toast.makeText(context, "Ding! Your Toast is ready.",   Toast.LENGTH_SHORT).show();
    }
    
}


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow