안드로이드에서 토스트를 표시하는 방법?


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
토스트에 관한 거의 모든 것 ... 간단한 자습서 .... 여기를 클릭하십시오
Thomas Daniel

답변:


849

응용 프로그램에서 토스트 를 표시하려면 다음을 시도하십시오.

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

3
@Elen, 애플리케이션 컨텍스트가 아닌 TOASTS를 만들기위한 활동 컨텍스트가 필요합니다.
Yousha Aleayoub

1
실제로, 활동 컨텍스트를 요구하는 것은 올바르지 않습니다. 그러나 시스템 서비스 등의 활동 이외의 작업을하려면 토스트가 메인 루프에 액세스해야합니다. 내 솔루션 게시
ChrisCM

7
onClick 메소드에 넣는 경우 getActivity ()를 getBaseContext ()로 바꾸면 나에게 도움이되었습니다.
Edward

@ 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
기본 어댑터 또는 주요 활동과 같은 것은 없으며 매개 변수 앱 컨텍스트, 메시지, 지속 시간 / 짧음을 전달하여 표시 만 토스트
Mahesh

47

통사론

Toast.makeText(context, text, duration);

매개 변수 값

문맥

getApplicationContext() -애플리케이션에서 실행중인 모든 활동에 대한 컨텍스트를 리턴합니다.

getBaseContext() -응용 프로그램 내 다른 컨텍스트에서 컨텍스트에 액세스하려는 경우 액세스 할 수 있습니다.

getContext() -현재 실행중인 활동 만 컨텍스트보기를 리턴합니다.

본문

text -문자열이 아닌 경우 캐스트 유형을 사용할 수 있습니다. "STRING"을 리턴하십시오.

 (string)num   // type caste

지속

Toast.LENGTH_SHORT -토스트 지연 2000ms 사전 정의

Toast.LENGTH_LONG -토스트 지연 3500ms 사전 정의

milisecond -사용자가 정의한 밀리 초 지연 (예 : 4000)


예 1

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

예 2

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

사용자 정의 5000 밀리 초 토스트 지연.
Jay Patel

잘 설명하지만 응용 프로그램 컨텍스트가 아닌 TOASTS를 만들려면 활동 컨텍스트가 필요합니다.
Yousha Aleayoub

글쎄, (string) num과 같은 캐스트는 아직 Java에 도입되지 않았습니다. Integer.toString () 또는 이와 유사한 것을 시도하십시오.
Mostowski 접기

2
토스트에 대한 설정 기간은 불가능하며 사전 정의 된 시간 (LENGTH_SHORT & LENGTH_LONG) 만 가능합니다 .
Jorgesys

23

안드로이드에서 토스트하기

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

또는

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

LENGTH_SHORT 및 LENGTH_LONG은 부울 플래그로 작동합니다. 즉, 토스트 타이머를 밀리 초로 보낼 수는 없지만이 두 가지 옵션 중 하나를 사용해야합니다.


6
설명서를 읽으면 메시지 기간 동안 Toast.LENGTH_SHORT 또는 Toast.LENGTH_LONG 만 선택합니다.
Jorgesys

20

당신은 당신의 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();

1
오른쪽-여기 GitHub의 실제 프로젝트의 일부 예가 있습니다 -codota.com/android/methods/android.widget.Toast/show
drorw

15

나는 여러 건의 토스트를 시도했으며 토스트가 그들에게 오류를주는 사람들을 위해

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

14

두 가지 방법이 있습니다.

내장 된 토스트 메시지를 사용하십시오

//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
잘 설명하지만 응용 프로그램 컨텍스트가 아닌 TOASTS를 만들려면 활동 컨텍스트가 필요합니다.
Yousha Aleayoub

안드로이드 문서는 구체적으로 애플리케이션 컨텍스트를 언급한다 : "이 메소드는 애플리케이션 컨텍스트, 텍스트 메시지 및 토스트 지속 시간의 세 가지 매개 변수를 취합니다. 제대로 초기화 된 토스트 오브젝트를 리턴합니다."
lgunsch

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 = 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)

에 두 가지 방법을 추가하십시오 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 Example

통사론

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

showToastApplication 클래스 에 메소드를 넣고 어디에서나 토스트를 표시 할 수 있습니다.


1

활동에 간단한 토스트를 쓰려면 : Toast.makeText(getApplicationContext(),"Hello",Toast.LENGTH_SHORT).show();

1. 토스트에 TextView 표시 : ---

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

토스트로 2.Showing 이미지 :-

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

토스트로 레이아웃 표시 :-

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에 토스트를 쓰려면 다음을 수행하십시오. 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.