2016-06-28 7 views
-1

내 코드의 다른 인스턴스에서 토스트 값을 업데이트하려고합니다. 이 같은 객체 인스턴스화하려고 :토스트 값을 업데이트하는 방법은 무엇입니까?

Toast mToast = Toast.makeText(this,"",Toast.LENGTH_SHORT); 

을 나는 내 코드 내에서 필요할 때마다 그 값을 업데이트합니다. 이와 같이 :

mToast.setText("Hello!"); 

초기 인스턴스화가 내 코드를 손상시키는 것 같습니다.

이것이 일어날 수있는 단서가 있습니까?

+0

당신이 때 응용 프로그램 충돌 로그 캣에 출력을 얻을 전체 스택 트레이스를 게시 할 수 다음, 당신의 토스트를 제거하려면? –

+0

@AndrewBrooke Toast는 UI 요소이고 하나의 토스트에 속해야하기 때문에 충돌이있는 것으로 알고 있습니다. 그 자체로는 인스턴스화 될 수 없습니다. Alexandre Martin의 솔루션이 가장 간단합니다. 나는 그것을 시도 할 것이다! –

답변

2

토스트를 인스턴스화 할 때 응용 프로그램이 중단되는 경우 생성자에서 잘못된 컨텍스트가 원인 일 수 있습니다. 어디에서 신고합니까? 당신의 실제 상황을 꼭 확인하십시오.

실제로 토스트를 업데이트 할 수는 없지만 축배를 숨기고 새 토스트를 만들 수 있습니다. 사용 mToast.cancel();

mToast.setText("New text"); 
mToast.show(); 
1

문자열 메시지를 받고 표시하는 함수를 만들어야합니다.

public void showToast(String message) { 

    Toast.makeText(this, message, Toast.LENGTH_LONG).show(); 

} 

그리고 당신이 원하는 위치를 호출

가 토스트를 업데이트하려면

showToast("My message"); 

편집을 표시하면서 : 그것은 나를 위해 작동

Toast mToast = Toast.makeText(this, "text", Toast.LENGTH_LONG).show(); 

//... 

mToast.cancel(); 
mToast.setText("Updated text"); 
mToast.show(); 

, 그래서 오류를 제공하십시오 메시지 :

+0

내 문제는 이전 텍스트가 이미 화면에 있으면 텍스트를 업데이트하지 않는다는 것입니다. –

+0

다음에 표시됩니다. 'cancel()'을 호출하면 이미 표시된 토스트를 제거 할 수 있습니다 –

+0

어디에서 'cancel()'을 사용합니까? 함수의 첫 번째 줄입니까? –

관련 문제