2017-05-04 106 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" /> 

這裏是Java。

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

如果你創建了一個'String textToSet =「Score:」+ currentScore;'then 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); 

這樣你可以轉換字符串,提供複數形式和格式的安全。