it-swarm.com.de

Wie wird Toast in Android angezeigt?

Ich habe einen Schieberegler, der hochgezogen werden kann und dann eine Karte zeigt. Ich kann den Schieberegler nach oben und unten bewegen, um die Karte ein- oder auszublenden. Wenn die Karte vorne ist, kann ich Berührungsereignisse auf dieser Karte handhaben. Bei jedem Berühren wird eine AsyncTask gestartet, es lädt einige Daten herunter und erstellt eine Toast, die die Daten anzeigt. Obwohl ich die Aufgabe bei einem Berührungsereignis starte, wird kein Toast angezeigt, nicht bis ich den Schieberegler schließe. Wenn der Schieberegler geschlossen ist und die Karte nicht mehr angezeigt wird, erscheint die Variable Toast.

Irgendwelche Ideen?

Starten Sie die Aufgabe

BEARBEITEN:

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

und in onPostExecute einen Toast machen

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

In new TestTask(this) ist dies eine Referenz auf MapOverlay und nicht auf MapActivity, daher war dies das Problem.

407
Artjom Zabelin

Versuchen Sie Folgendes, um Toast in Ihrer Anwendung anzuzeigen:

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

Ein anderes Beispiel:

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

Wir können zwei Konstanten für die Dauer definieren:

int LENGTH_LONG Zeigt die Ansicht oder Textbenachrichtigung für einen langen Zeitraum an von Zeit.

int LENGTH_SHORT Zeigt die Ansicht oder Textbenachrichtigung für einen kurzen Zeitraum an von Zeit.

Anpassen Ihres Toasts

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

Beim Erweitern der Aktivität mit baseadapter wurde dies verwendet

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

oder wenn Sie Aktivität oder mainactivity verwenden

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

Syntax

Toast.makeText(context, text, duration);

Parameterwert

context

getApplicationContext() - Gibt den Kontext für alle Aktivitäten zurück, die in der Anwendung ausgeführt werden.

getBaseContext() - Wenn Sie auf Kontext aus einem anderen Kontext in der Anwendung zugreifen möchten, können Sie darauf zugreifen.

getContext() - Gibt nur die aktuelle laufende Aktivität der Kontextansicht zurück.

text

text - Gibt "STRING" zurück. Wenn keine Zeichenfolge vorhanden ist, können Sie die Typumwandlung verwenden.

 (string)num   // type caste

Dauer

Toast.LENGTH_SHORT - Toastverzögerung 2000 ms vordefiniert

Toast.LENGTH_LONG - Toastverzögerung 3500 ms vordefiniert

milisecond - Vom Benutzer definierte Toastverzögerung in Millisekunden (z. B. 4000)


Beispiel 1

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

Beispiel.2

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

Toast in Android

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

oder

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

(LENGTH_SHORT und LENGTH_LONG fungieren als boolesche Flags. Dies bedeutet, dass Sie keinen Toast-Timer in Millisekunden senden können, aber Sie müssen eine dieser beiden Optionen verwenden.)

21
Dinesh

Sie können Ihre Aufgaben anpassen:

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

Oder allgemeiner weg:

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

Ich habe mehrere Toasts ausprobiert und für diejenigen, denen der Toast Fehler macht, versuchen Sie es

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

Es gibt zwei Möglichkeiten, dies zu tun.

Verwenden Sie entweder die integrierte Toast-Nachricht 

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

oder erstellen Sie eine benutzerdefinierte, indem Sie eine benutzerdefinierte Layoutdatei bereitstellen

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

Ich bin hier auf die Antworten gestoßen und wurde von der Tatsache angezogen, dass es so aussieht, als ob jemand herumstochert und glaubt, dass ein Aktivitätskontext erforderlich ist. Das ist nicht der Fall. Voraussetzung ist jedoch, dass ein Toast vom Hauptereignis oder vom UI-Thread gebucht wird. Daher ist es etwas schwierig, dies außerhalb eines Aktivitätskontextes zu erreichen. Hier ist ein Beispiel, das in einem Systemdienst oder einer potenziellen Klasse funktioniert, die letztendlich von Context erbt.

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

Beachten Sie, dass wir keinen Zugriff auf eine Instanz von Activity benötigen, damit dies funktioniert. Bitte hör auf zu behaupten, dass dies der Fall ist! Wenn Activity erforderlich wäre, würde die Methodensignatur keine Context aufrufen.

9
ChrisCM

Wenn es ein Fragment ist,

Toast.makeText(getActivity(), "this is my Toast message!!! =)",
                   Toast.LENGTH_LONG).show();
7
sam
Toast.makeText(app.getBaseContext(),"your string",Toast.LENGTH_SHORT).show();

anstatt "app.getBaseContext ()" zu verwenden. 

Sie können versuchen, " getApplicationContext () " oder " getContext () " zu verwenden. 

Wenn Ihr Code aktiv ist, sollten Sie "this" von "Activty.this" verwenden.
Wenn Ihr Code fragmentiert ist, sollten Sie "getActivity ()" wählen.

7
Yogesh Nandha

Verwenden Sie zum Anzeigen von Toast den folgenden Code:

Toast toast = new Toast(getApplicationContext());

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

toast.setDuration(Toast.LENGTH_LONG);

toast.show();
6
Anurag
 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**

Einfacher Weg

toast("Your Message")

OR

toast(R.string.some_message)

Fügen Sie einfach zwei Methoden in Ihr BaseActivity ein. Oder erstellen Sie ein neues BaseActivity, wenn Sie es noch nicht verwenden.

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

und erweitern Sie alle Ihre Aktivitäten um BaseActivity.

public class MainActivity extends BaseActivity
3
Khemraj

 enter image description here

Syntax

Toast.makeText(context, text, duration);

Sie können getApplicationContext () oder getActivity () oder MainActivity.this (wenn der Aktivitätsname MainActivity ist)

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

oder

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

Klicken Sie hier, um weitere Informationen zu erhalten

2
Athira Reddy

Einfachster Weg! (Um in Ihrer Hauptaktivität anzuzeigen, ersetzen Sie das erste Argument für eine andere Aktivität.)

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

Das hat für mich funktioniert:

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

Hier ist ein anderes:

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

Wobei Toast ist:

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

& strings.xml:

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

0
Jadeye

Wenn Sie in Ihrer Aktivität einen einfachen Toast schreiben möchten: Toast.makeText(getApplicationContext(),"Hello",Toast.LENGTH_SHORT).show();

1. TextView in Toast anzeigen: ---

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

2.Bild als Toast zeigen: -

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. Layout als Toast anzeigen: -

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

** Wenn Sie den Toast in Ihrem Async schreiben möchten, dann: private Activity activity;private Android.content.Context context;this.activity = activity;this.context = context;Toast.makeText(context, "Hello", Toast.LENGTH_SHORT).show();

0
Deepya

Toast vom Dienst anzeigen

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

Sie können auch die showToast-Methode in Ihre Application-Klasse einfügen und den Toast von überall aus anzeigen.

0
Khemraj