Ich lerne gerade etwas Android für ein Schulprojekt und ich kann nicht herausfinden, wie man Text dynamisch in eine Textansicht umwandeln kann.
Hier ist mein Code:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_enviar_mensaje);
err = (TextView)findViewById(R.id.texto);
err.setText("Escriba su mensaje y luego seleccione el canal.");
}
Das funktioniert momentan nicht und ich kann keinen Weg finden, damit es funktioniert ...
Jede Hilfe wird sehr verständlich sein ... Danke für die Zeit, José.
BEARBEITEN: Hier ist die activity_enviar_mensaje.xml
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:tools="http://schemas.Android.com/tools"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
...
tools:context=".EnviarMensaje" >
...
<TextView
Android:id="@+id/texto"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_alignLeft="@+id/listaVista"
Android:layout_alignParentBottom="true"
Android:layout_alignRight="@+id/listaVista"
Android:text="TextView" />
...
</RelativeLayout>
Wenn ich nicht arbeite, meine ich, dass sich der angezeigte Text zu keinem Zeitpunkt ändert ...
In Ihrem Layout XML:
<TextView
Android:id="@+id/myAwesomeTextView"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_alignParentTop="true"
Android:text="Escriba el mensaje y luego clickee el canal a ser enviado"
Android:textSize="20sp" />
Dann in Ihrer Aktivitätsklasse:
// globally
TextView myAwesomeTextView = (TextView)findViewById(R.id.myAwesomeTextView);
//in your OnCreate() method
myAwesomeTextView.setText("My Awesome Text");
Füge diesen Code in deine XML ein
<TextView
Android:id="@+id/textview1"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"/>
Füge diesen Code in deine Java-Datei ein
// Das Deklarieren von Komponenten wie TextView Global ist ein guter Habbit
TextView mTextView = (TextView) findViewById(R.id.textview1);
// Setze dies in OnCreate
mTextView.setText("Welcome to Dynamic TextView");
Nun, @+id/listaVista
ListView wird nach @+id/texto
und darüber gezeichnet. Also in ListView wechseln von:
Android:layout_below="@+id/editText1"
zu:
Android:layout_above="@+id/texto"
Da die Liste nach textview gezeichnet wird, finde ich es auch gefährlich, Android:layout_alignRight="@+id/listaVista"
in TextView zu haben. Also entfernen Sie es und finden Sie einen anderen Weg zur Ausrichtung.
EDIT Ein zweiter Blick auf dein Layout Ich denke, das ist es, was du wirklich haben willst:
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:tools="http://schemas.Android.com/tools"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:paddingBottom="@dimen/activity_vertical_margin"
Android:paddingLeft="@dimen/activity_horizontal_margin"
Android:paddingRight="@dimen/activity_horizontal_margin"
Android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".EnviarMensaje" >
<TextView
Android:id="@+id/textView1"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_alignParentTop="true"
Android:text="Escriba el mensaje y luego clickee el canal a ser enviado"
Android:textSize="20sp" />
<EditText
Android:id="@+id/editText1"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_alignLeft="@+id/textView1"
Android:layout_alignRight="@+id/textView1"
Android:layout_below="@+id/textView1"
Android:ems="10"
Android:inputType="text" />
<TextView
Android:id="@+id/texto"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_alignLeft="@+id/listaVista"
Android:layout_alignParentBottom="true"
Android:text="TextView" />
<ListView
Android:id="@+id/listaVista"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_above="@+id/texto"
Android:layout_alignParentLeft="true"
Android:layout_below="@+id/editText1" >
</ListView>
</RelativeLayout>
Warum versuchen Sie nicht, den Textview-Inhalt aufStart () statt aufCreate () zuzuweisen?
In XML verwenden Sie dies:
<TextView
Android:id="@+id/textView"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"/>
In Aktivität definieren Sie die Ansicht:
Textview textView=(TextView)findViewById(R.id.textView);
textView.setText(getResources().getString(R.string.txt_hello));
In String-Datei:
<string name="txt_hello">Hello</string>
Ausgabe: Hallo
Ich hatte ein ähnliches Problem. Es stellte sich heraus, dass ich zwei TextView-Objekte mit derselben ID hatte. Sie befanden sich in unterschiedlichen Ansichtsdateien und daher gab mir Eclipse keinen Fehler. Versuchen Sie, Ihre ID in der Textansicht umzubenennen und zu überprüfen, ob das Problem dadurch nicht behoben wird.
Versuche dies:
TextView err = (TextView)findViewById(R.id.text);
Stellen Sie sicher, dass Sie TextView importieren.
In der Layoutdatei.
<TextView
Android:id="@+id/myTextView"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:text="Some Text"
Android:textSize="18sp"
Android:textColor="#000000"/>
In Aktivität
TextView myTextView = (TextView)findViewById(R.id.myTextView);
myTextView.setText("Hello World!");
fügen Sie diesen Code in Ihre activity_main.xml ein:
<TextView
Android:id="@+id/name"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_alignParentLeft="true"
Android:layout_alignParentTop="true"
Android:layout_marginLeft="19dp"
Android:layout_marginTop="43dp"
Android:text="@string/name" />
und gehen Sie zu res folder-> values-> strings.xml Fügen Sie den folgenden Code mit dem bereits vorhandenen Code ein:
<string name="name">Escriba su mensaje y luego seleccione el canal.</string>
der obige Code bedeutet, dass Sie eine Textansicht mit id: name (Android: id = "@ + id/name") erstellt haben und diese Textansicht einer Zeichenfolge mit einem Bezeichnernamen (Android: text = "@ string/name") in strings.xml, wenn Sie diesen Bezeichnernamen verwenden, um den Text zuzuweisen,
Das sollte den Trick tun:
TextView.setText("test");
Bitte korrigieren Sie die folgende Zeile:
err = (TextView)findViewById(R.id.texto);
zu:
err = (TextView)findViewById(R.id.err);
In XML-Datei
<TextView
Android:id="@+id/textview"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="My Name"
Android:textColor="#cccccc"/>
In der Java-Aktivitätsdatei
public class MainActivity1 extends Activity
{
TextView t1;
public void onCreate(Bundle onSavedInstance)
{
setContentView(R.layout.xmlfilename);
t1 = (TextView)findViewbyId(R.id.textview);
}
}
Da hast du statischen Text angegeben
err.setText("Escriba su mensaje y luego seleccione el canal.");
Es wird sich nicht ändern, es wird gleich bleiben.
Beispiel für dynamischen Text für die Textansicht ist:
MainActivity.Java
package com.example.dynamictextview;
import Android.app.Activity;
import Android.os.Bundle;
import Android.view.View;
import Android.view.View.OnClickListener;
import Android.widget.Button;
import Android.widget.TextView;
public class MainActivity extends Activity {
int count = 0;
Button clickMeBtn;
TextView dynamicText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
clickMeBtn = (Button) findViewById(R.id.button_click);
dynamicText = (TextView) findViewById(R.id.textview);
clickMeBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
count++;
dynamicText.setText("dynamic text example : " + count);
}
});
}
}
For activity_main.xml
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:tools="http://schemas.Android.com/tools"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
tools:context="com.example.dynamictextview.MainActivity" >
<Button
Android:id="@+id/button_click"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="click me"
Android:layout_centerInParent="true" />
<TextView
Android:id="@+id/textview"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="@string/hello_world"
Android:layout_below="@id/button_click"
Android:layout_centerHorizontal="true"
Android:textSize="25sp"
Android:layout_marginTop="20dp"
/>
</RelativeLayout>
Sie können die Zeichenfolge in Textansicht programmgesteuert wie folgt festlegen.
TextView textView = (TextView)findViewById(R.id.texto);
err.setText("Escriba su mensaje y luego seleccione el canal.");
oder
TextView textView = (TextView)findViewById(R.id.texto);
err.setText(getActivity().getResource().getString(R.string.seleccione_canal));
Sie können die Zeichenfolge wie folgt in xml setzen.
<TextView
Android:id="@+id/name"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_alignParentLeft="true"
Android:layout_alignParentTop="true"
Android:layout_marginLeft="19dp"
Android:layout_marginTop="43dp"
Android:text="Escriba su mensaje y luego seleccione el canal." />
oder
<TextView
Android:id="@+id/name"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_alignParentLeft="true"
Android:layout_alignParentTop="true"
Android:layout_marginLeft="19dp"
Android:layout_marginTop="43dp"
Android:text="@string/seleccione_canal" />
zuerst sollten Sie ein Objekt für die Textansicht erstellen.
TextView show_alter
show_alert = (TextView)findViewById(R.id.show_alert);
show_alert.setText("My Awesome Text");
Ihr Code ist in Ordnung, Sie laden die .xml-Datei, die die TextView
enthält, mit setContentView()
:
setContentView(R.layout.activity_enviar_mensaje);
und dann die Referenz der TextView in activity_enviar_mensaje.xml
abrufen und einen Text festlegen:
err = (TextView)findViewById(R.id.texto);
err.setText("Escriba su mensaje y luego seleccione el canal.");
Das Problem ist, dass Ihre TextView von der ListView
ausgeblendet wird:
Sie sollten ButterKnife Library verwenden http://jakewharton.github.io/butterknife/
Und benutze es gerne
@InjectView(R.id.texto)
TextView err;
in der onCreate-Methode
ButterKnife.inject(this)
err.setText("Escriba su mensaje y luego seleccione el canal.");
Gehen Sie zu "activityMain", und legen Sie den Text fest, indem Sie ein Widget aus dem Widgets-Abschnitt hinzufügen und den Text durch Auswahl und Eingabe manuell ändern.
In your layout XML:
<TextView
Android:id="@+id/myAwesomeTextView"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_alignParentTop="true"
Android:text="Escriba el mensaje y luego clickee el canal a ser
enviado"
Android:textSize="20sp" />
Then, in your activity class:
// globally
TextView myAwesomeTextView = (TextView)findViewById(R.id.myAwesomeTextView);
//in your OnCreate() method
myAwesomeTextView.setText("My Awesome Text");
In deinem Layout. Ihr Texto sollte nicht enthalten (Android: Text = ...). Ich würde diese Zeile entfernen. Behalten Sie entweder den Java-String OR bei (Android: text = ...)
final TextView err = (TextView)findViewById(R.id.texto);
err.setText("Escriba su mensaje y luego seleccione el canal.");
alles über textview hier