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



Answers

baseadapter 사용하여 활동 확장

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

또는 활동 또는 mainactivity 활동을 사용하는 경우

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

나는 끌어 올릴 수있는 슬라이더를 가지고 있으며지도를 보여준다. 슬라이더를 위아래로 움직여지도를 숨기거나 표시 할 수 있습니다. 지도가 전면에 있으면 해당지도에서 터치 이벤트를 처리 할 수 ​​있습니다. 매번 누를 때마다 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();

새로운 TestTask(this) 에서는 TestTask(this) 대한 참조이며 MapOverlay 대한 참조는 MapOverlay 로 이것이 문제였습니다.




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

대신 "app.getBaseContext ()"를 사용하십시오.

" getApplicationContext () "또는 " getContext () "를 사용해 볼 수 있습니다.

코드가 활동중인 경우 "Activty.this"의 "this"를 사용해야합니다.
코드가 조각에 있다면 "getActivity ()"로 이동해야합니다.




나는 여기에 대한 답을 찾았고, 활동 맥락이 필요하다고 믿는 사람이 있다는 사실에 끌렸다. 그렇지 않다. 그러나 메인 이벤트 또는 UI 스레드에서 Toast를 게시해야한다는 요구 사항이 있습니다. 따라서, 이것을 액티비티 컨텍스트 외부에서 사용하게하는 것은 약간 까다 롭습니다. 다음은 시스템 서비스 또는 궁극적으로 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 호출하지 않습니다.




Toast를 표시하려면 다음 코드를 사용합니다.

Toast toast = new Toast(getApplicationContext());

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

toast.setDuration(Toast.LENGTH_LONG);

toast.show();



Android에서 축배하기

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

또는

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

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




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





Related