Androidでトーストを表示する方法は?


446

引き上げ可能なスライダーがあって、地図が表示されます。スライダーを上下に動かして、地図を表示または非表示にすることができます。地図が前面にある場合、その地図でタッチイベントを処理できます。タッチするたびに、a 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();

new TestTask(this)では、これはへの参照でMapOverlayあり、への参照ではないためMapActivity、これが問題でした。


1
この投稿はずっと前に回答されましたが、私のコメントはまだ誰かを助けるかもしれないと思います。に関連する整形式のライブラリがありますToast。確認してください:stackoverflow.com/a/18280318/1891118
Oleksii K.

2
トーストのほぼすべて...簡単なチュートリアル... ここをクリック
トーマスダニエル

回答:


849

アプリケーションにトーストを表示するには、次のことを試してください。

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

もう一つの例:

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

継続時間の2つの定数を定義できます。

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

3
@Elen、アプリケーションコンテキストではなく、TOASTSを作成するにはアクティビティコンテキストが必要です。
Yousha Aleayoub

1
実際、Activityコンテキストを要求することは正しくありません。ただし、トーストをアクティビティの外(システムサービスなど)で機能させるには、メインループにアクセスする必要があります。私のソリューションを投稿しています。
ChrisCM、2015

7
onClickメソッド内に配置する場合は、getActivity()をgetBaseContext()に置き換えるとうまくいきました。
エドワード

@ PhilipBelgrave-Herbert残念ながらあなたのリンクはもはや良くありません。
Ellen Spertus

4
Toast.makeText(MainActivity.this、message、Toast.LENGTH_LONG).show();
Shahab Einabadi

83

baseadapterこれを使用して活動を拡張する

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

またはあなたが活動を使用している場合または mainactivity

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

1
ベースアダプターやメインアクティビティのようなものはなく、トーストはパラメーターアプリコンテキスト、メッセージ、duration-long / shortを渡すことによってのみ表示されます
Mahesh

47

構文

Toast.makeText(context, text, duration);

パラメータ値

環境

getApplicationContext() -アプリケーションで実行されているすべてのアクティビティのコンテキストを返します。

getBaseContext() -アプリケーション内の別のコンテキストからコンテキストにアクセスする場合は、アクセスできます。

getContext() -現在実行中のアクティビティのみのコンテキストビューを返します。

テキスト

text -"STRING"を返します。文字列でない場合は、型キャストを使用できます。

 (string)num   // type caste

期間

Toast.LENGTH_SHORT -トースト遅延2000ミリ秒が事前定義

Toast.LENGTH_LONG -事前定義されたトースト遅延3500ミリ秒

milisecond -トースト遅延ユーザー定義ミリ秒(例:4000)


例1

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

例2

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

ユーザー定義の5000ミリ秒トースト遅延。
Jay Patel

説明は良いですが、アプリケーションコンテキストではなく、TOASTを作成するにはアクティビティコンテキストが必要です。
Yousha Aleayoub

まあ、まあ、(string)numのようなキャストはまだJavaに導入されていません。Integer.toString()などを試してください。
Mostowskiは、

2
トーストでは継続時間を設定できません事前定義された時間LENGTH_SHORT&LENGTH_LONGのみです。
Jorgesys 16

23

Androidで乾杯するには

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

または

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

(LENGTH_SHORTおよびLENGTH_LONGはブールフラグとして機能します。つまり、トーストタイマーをミリ秒に送信できませんが、これら2つのオプションのいずれかを使用する必要があります)


6
ドキュメントを読んでください。メッセージの継続時間には、Toast.LENGTH_SHORTまたはToast.LENGTH_LONGのどちらかを選択します。
Jorgesys 2014年

20

次のようにカスタマイズできます。

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


15

私はいくつかのトーストを試しました、そして彼らのトーストが彼らにエラーを与えている人のために

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

14

それには2つの方法があります。

組み込みのトーストメッセージを使用する

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

1
説明は良いですが、アプリケーションコンテキストではなく、TOASTを作成するにはアクティビティコンテキストが必要です。
Yousha Aleayoub

Androidドキュメントでは、アプリケーションコンテキストについて具体的に説明しています。「このメソッドは、アプリケーションコンテキスト、テキストメッセージ、トーストの持続時間の3つのパラメーターを取ります。適切に初期化されたトーストオブジェクトを返します。」
lgunsch 2017

9

私はここで答えに出くわし、アクティビティコンテキストが必要であると信じて、誰かがぶらぶらしているように見えるという事実に惹かれました。これはそうではありません。ただし、トーストはメインイベントまたはUIスレッドからポストされる必要があります。したがって、これをアクティビティコンテキストの外で機能させることは、少し注意が必要です。以下は、システムサービス、または最終的にから継承する潜在的なクラスの内部で機能する例です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


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

「app.getBaseContext()」を使用する代わりに。

getApplicationContext()」または「getContext()」を使用してみてください。

コードが動作している場合は、「Activty.this」の「this」を使用する必要があります。
コードが断片化している場合は、「getActivity()」を使用する必要があります


7

断片なら

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

6

Toastを表示するには、次のコードを使用します。

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

シンプルな方法

toast("Your Message")

または

toast(R.string.some_message)

に2つのメソッドを追加するだけ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

3

最も簡単な方法!(メインアクティビティに表示するには、他のアクティビティの最初の引数を置き換えます)

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

2

これは私のために働きました:

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

2

ここに画像の説明を入力してください

必ずお読みください:Androidトーストの例

構文

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

2

はじめに

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

1

サービスからトーストを表示

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クラスにメソッドを配置して、どこからでもトーストを表示できます。


1

アクティビティに簡単なトーストを書きたい場合: 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();

**非同期でトーストを書きたい場合: private Activity activity; private android.content.Context context; this.activity = activity; this.context = context; Toast.makeText(context, "Hello", Toast.LENGTH_SHORT).show();


1

ここに別のものがあります:

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>


1

フラグメントの内部(onCreateView)

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

クラスの内部(onCreate)

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.