2017-12-31 44 views
0

작동하지 않음이 작동 :변수/자원 연결이

Toast.makeText(getApplicationContext(), attemptsRemainingCount.toString(), Toast.LENGTH_LONG).show(); 

이 작동 : 그러나

Toast.makeText(getApplicationContext(), R.string.attemptsRemaining, Toast.LENGTH_LONG).show(); 

이를 작동하지 않습니다

Toast.makeText(getApplicationContext(), attemptsRemainingCount.toString() + R.string.attemptsRemaining, Toast.LENGTH_LONG).show(); 

그것을 나에게주는 모든가 긴 숫자. 누군가 제가 여기서 연결의 잘못을 말해 주시겠습니까?

답변

2

Java 변수를 자원 식별자와 연결합니다.() (attemptsRemainingCount.toString, getApplicationContext() +의 GetResources()에는 getString (R.string.attemptsRemaining) Toast.LENGTH_LONG.)

Toast.makeText .show();

다음 사용하여 시도

makeText(Context context, CharSequence text, int duration)

그리고 두 번째 예는 resId 또는 연결된 리소스 ID 버전 사용 :

+0

아, 맞아. 귀하의 제안에 감사드립니다. :) – BoshJailey

0

첫 번째 예는 차례로 makeTextCharSequence 버전을 호출하는 CharSequence을 사용하고 있습니다 makeText(Context context, int resId, int duration)

이렇게 두 가지 예가 일.

두 가지를 원하는대로 조합 할 수 있습니다. 즉, 연결된 리소스 ID를 String으로 변환 한 다음 연결하여 CharSequence 메서드를 사용해야합니다. 예를 들어,과 같이 :

Toast.makeText(getApplicationContext(), 
    attemptsRemainingCount.toString() + 
    getResources().getString(R.string.attemptsRemaining), 
    Toast.LENGTH_LONG).show(); 
0

처음 두 줄은 같은 보일 수 있습니다,하지만 그들은 Toast.makeText의 다른 오버로드 된 버전을 사용합니다. 첫 번째 문자는 the CharSequence version (문자열이 있기 때문에)을 사용하고 두 번째 문자는 the int version을 사용합니다 (정수 리소스 ID가 부여 되었기 때문에)

문자열을 리소스 ID (숫자)와 연결하면 여전히 문자열이됩니다. 자원 ID는 문자열로 변환

을 대신 문자열의 형식 문자열에 자원 (You have %1$d attempts left) 사용해야한다 :..

getResources().getString(R.string.attemptsRemaining, attemptsRemainingCount); 

가 서식 첨부 캐릭터 라인을 얻으려면이 섹션 Formatting strings를 참조 the string resources documentation에서 자세한 내용을 위해

숫자를 고정 된 문자열로 간단하게 연결하는 것보다 문자열 리소스의 형식 문자열의 장점은 번호가 같은 위치에 있지 않을 수있는 다른 언어로 쉽게 변환 될 수 있다는 것입니다.