Android TextView: "Verknüpfung von Text nicht mit setText"

Ich stelle Text mit setText () ein, indem ich folge .

prodNameView.setText("" + name); prodOriginalPriceView.setText("" + String.format(getString(R.string.string_product_rate_with_ruppe_sign), "" + new BigDecimal(price).setScale(2, RoundingMode.UP))); 

In diesem ersten ist eine einfache Verwendung und Zweite ist die Einstellung Text mit Formatierung Text.

Android Studio ist so interessant, ich habe Analyze -> Code Cleanup und ich bekam Vorschlag auf über zwei Zeilen wie.

Bildbeschreibung hier eingeben

Verknüpfen Sie den mit setText angezeigten Text nicht. Verwenden Sie Resource-String mit Platzhaltern. Weniger … (Strg + F1)

Beim Aufruf von TextView # setText:

  • Nennen Sie niemals Nummer # toString (), um Zahlen zu formatieren. Es wird nicht mit Fraktionsabscheidern und Gebietsschemaspezifischen Ziffern korrekt umgehen. Verwenden Sie stattdessen das String # -Format mit den richtigen Formatvorgaben (% d oder% f).
  • Geben Sie kein String-Literal (zB "Hello"), um Text anzuzeigen. Hardcoded Text kann nicht richtig in andere Sprachen übersetzt werden. Verwenden Sie stattdessen Android Resource Strings.
  • Erstellen Sie keine Nachrichten, indem Sie Textblöcke verknüpfen. Solche Nachrichten können nicht richtig übersetzt werden.

Was kann ich dafür machen? Jeder kann helfen zu erklären, was das Ding ist und was soll ich tun?

  • Wie man ImageView am Ende der mehrzeiligen TextView einfügt?
  • TextView - OnClick - Android
  • Android scrollview autoscrolling als Text hinzugefügt wird
  • Text leftside eines RadioButton mit einer Marge auf Android
  • Deaktiviere die "Rechtschreibprüfung" auf textView
  • Android: ClickableSpan in anklickbarem TextView
  • Horizontaler Scrolling-Text in Android
  • Android: LayoutParams für TextView lässt die Ansicht programmgesteuert verschwinden
  • 4 Solutions collect form web for “Android TextView: "Verknüpfung von Text nicht mit setText"”

    Ressource hat die überladene Version von getString, die ein varargs vom Typ Object : getString (int, java.lang.Object …) nimmt . Wenn Sie Ihren String in strings.xml korrekt einrichten, mit den richtigen Platzhaltern können Sie diese Version verwenden, um die formatierte Version Ihres endgültigen Strings abzurufen. Z.B

     <string name="welcome_messages">Hello, %1$s! You have %2$d new messages.</string> 

    Mit getString(R.string.welcome_message, "Test", 0);

    Android wird eine String mit zurückgeben

      Hello Test! you have 0 new messages 

    Über setText("" + name);

    Ihr erstes Beispiel, prodNameView.setText("" + name); Macht mir keinen Sinn. Die TextView ist in der Lage, Nullwerte zu verarbeiten. Wenn der Name null ist, wird kein Text gezeichnet.

    Ich lief in die gleiche Fehlermeldung und löste es so.

    Zuerst war mein Code wie:

     private void displayQuantity(int quantity) { TextView quantityTextView = (TextView) findViewById(R.id.quantity_text_view); quantityTextView.setText("" + quantity); } 

    Ich habe den Fehler "Verknüpfen Sie nicht Text mit setText angezeigt. Verwenden Sie Ressource-String mit Platzhaltern." damit

    Ich habe das zu strings.xml hinzugefügt

     <string name="blank">%d</string> 

    Was ist meine erste "" + ein Platzhalter für meine Nummer (Menge).

    Anmerkung: meine Mengenvariable wurde vorher definiert und ist, was ich an den String anfügen wollte. In dem Java-Code habe ich geschrieben.

     private void displayQuantity(int quantity) { TextView quantityTextView = (TextView) findViewById(R.id.quantity_text_view); quantityTextView.setText(getString(R.string.blank, quantity)); } 

    Und mein fehler ging weg Das Verhalten in der App änderte sich nicht und meine Menge zeigte sich weiter, wie ich es jetzt ohne einen Flusenfehler wollte.

    Sie sollten diesen Thread überprüfen und einen Platzhalter wie seinen (nicht getestet)

     <string name="string_product_rate_with_ruppe_sign">Price : %1$d</string> String text = String.format(getString(R.string.string_product_rate_with_ruppe_sign),new BigDecimal(price).setScale(2, RoundingMode.UP)); prodOriginalPriceView.setText(text); 

    Das Problem ist, weil Sie "" am Anfang jeder Saite anhängen.

    Flusen scannen Argumente, die an setText und werden Warnungen generieren, in Ihrem Fall nach Warnung ist relevant:

    Erstellen Sie keine Nachrichten, indem Sie Textblöcke verknüpfen. Solche Nachrichten können nicht richtig übersetzt werden.

    Da du jeden String mit "" verkettet hast.

    Entfernen Sie diese Verkettung als die Argumente, die Sie übergeben sind bereits Text. Auch können Sie .toString() wenn überhaupt irgendwo anders anstelle der Verknüpfung Ihrer Zeichenfolge mit ""

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.