2017-05-04 1 views
0

안녕하세요. Android 학습에 대한 책 자습서를 따르고 있지만이 책은 구식입니다. "문자열 리터럴을 번역 할 수 없습니다"및 "텍스트를 setText와 연결하지 않습니다."가 나타납니다. TextView를 업데이트하는 올바른 방법이 궁금합니다. 나는 그것이 내가 본질적으로하고 싶어하는 것이라고 생각한다.textView를 올바르게 업데이트하는 방법은 무엇입니까?

<TextView 
    android:id="@+id/textScore" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Score: 999" 
    android:textSize="36sp" 
    android:layout_alignParentBottom="true" 
    android:layout_toLeftOf="@+id/textOperator" 
    android:layout_toStartOf="@+id/textOperator" /> 

<TextView 
    android:id="@+id/textLevel"`enter code here` 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Level: 4" 
    android:textSize="36sp" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentEnd="true" 
    android:layout_marginRight="11dp" 
    android:layout_marginEnd="11dp" /> 

여기는 자바입니다.

textObjectScore.setText("Score:" + currentScore); 
    textObjectLevel.setText("Level:" + currentLevel); 
+0

'String textToSet = "Score :"+ currentScore; "를 작성하면 어떻게됩니까?'textObjectScore.setText (textToSet);'? –

답변

2

두 가지 모두 번역과 관련이 있습니다.

"문자열 리터럴을 변환 할 수 없습니다." 이것은 사용자가 전화를 변경하는 언어와 상관없이이 문자열이 영어로 표시된다는 경고입니다. 전문 응용 프로그램의 경우 strings.xml에서 문자열을 정의하고 해당 문자열을 앱에서 사용합니다. 이렇게하면 번역 파일을 제공한다고 가정 할 때 전화의 로켈에 맞게 문자열을 선택할 수 있습니다.

"텍스트를 setText와 연결하지 마십시오." 귀하의 모국어로 이것을하는 데 실제 문제는 없습니다. 다른 언어에서는 문제가 문법적으로 이해되지 않을 수도 있습니다. 대신 strings.xml에 입력 변수가있는 문자열을 정의하고 getString을 사용하여 해당 변수를 채워야합니다.

하지만 국제 출시를 원하지 않을 때 신속하게 무언가를 던지려면 괜찮습니다.

0

은 가이드 라인 (https://developer.android.com/guide/topics/resources/string-resource.html)를 따르십시오.

<string name="score">Score: %1$d</string> 

을 그리고 이런 식으로 설정 : 예를 들어 다음과 같이 점수 관련 문자열을 지정

Resources res = getResources(); 
String text = res.getString(R.string.score, currentScore); 
textObjectScore.setText(text); 

이 방법 당신은 문자열을 번역 안전하게 복수형과 형식을 제공 할 수 있습니다.

관련 문제