Android TextView setText superposiciones anterior Texto

Me gustaría establecer un texto en un TextView de mi aplicación (lication). Este es el código que usé:

TextView lonTextView = (TextView) findViewById(R.id.textViewLonWert); lonTextView.setText(longitude.toString()); 

En realidad funciona, pero el texto anterior todavía se muestra! Por ejemplo, un 4 superpone un 8 (no se puede leer el texto más).

Tengo una Actividad iniciando un servicio. A continuación, registrar un LocalBroadcastReceiver en la actividad. El servicio periódicamente envía objetos de ubicación a la actividad. Desde la ubicación me sale por ejemplo la longitud y me gustaría actualizar un textview (sólo contiene la longitud) con la nueva longitud.

Yo estaría muy contento si alguien tiene una idea para resolver este problema.

ACTUALIZACIÓN: El código completo es bastante largo, así que aquí están los fragmentos relevantes:

TrackingActivity.java

 public class TrackingActivity extends Activity { // GPSTracker class GPSTracker gps; public String filename; /* Um eigene Position anzuzeigen */ ArrayList<OverlayItem> overlayItemArray; protected MapView mapView; protected MapController mapController; public Boolean isPause; public Boolean isTracking; public MyLocationOverlay myLocationOverlay; PathOverlay myPath; List<GeoPoint> path; public BroadcastReceiver screenReceiver; /* Textviews setzen */ TextView lonTextView; TextView latTextView; TextView altTextView; TextView accTextView; // Initiating Menu XML file (menu.xml) /*@Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater menuInflater = getMenuInflater(); menuInflater.inflate(R.menu.menu_tracking, menu); MenuItem mi_startTracking = menu.findItem(R.id.start_tracking); mi_startTracking.setVisible(true); return true; }*/ /** * Event Handling for Individual menu item selected * Identify single menu item by it's id * */ @Override public boolean onOptionsItemSelected(MenuItem item) { ... } @Override public boolean onPrepareOptionsMenu(Menu menu) { ... } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_tracking); isTracking = false; isPause = false; // create GPS-class object gps = new GPSTracker(TrackingActivity.this ,null); myPath = new PathOverlay(Color.RED, this); path = new ArrayList<GeoPoint>(); /* Map anzeigen */ mapView = new MapView(this, 500); mapView.setTileSource(TileSourceFactory.MAPNIK); org.osmdroid.views.MapView.LayoutParams mapParams = new org.osmdroid.views.MapView.LayoutParams( org.osmdroid.views.MapView.LayoutParams.MATCH_PARENT, org.osmdroid.views.MapView.LayoutParams.MATCH_PARENT, null, 0, 0, 0); /*löst Fehler aus: mapView.setClickable(true);*/ mapView.setBuiltInZoomControls(true); mapController = new MapController(mapView); mapView.getController().setZoom(15); //--- Create Overlay overlayItemArray = new ArrayList<OverlayItem>(); DefaultResourceProxyImpl defaultResourceProxyImpl = new DefaultResourceProxyImpl(this); MyItemizedIconOverlay myItemizedIconOverlay = new MyItemizedIconOverlay( overlayItemArray, null, defaultResourceProxyImpl); mapView.getOverlays().add(myItemizedIconOverlay); //--- //Add current position myLocationOverlay = new MyLocationOverlay(this, mapView); mapView.getOverlays().add(myLocationOverlay); /* Lege Pfad auf Karte */ mapView.getOverlays().add(myPath); mapView.invalidate(); LinearLayout myLayout = (LinearLayout) findViewById(R.id.trackingLinearLayoutMap); myLayout.addView(mapView,mapParams); } private BroadcastReceiver gpsDataReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { //Log.d("TrackingActivity", "in Receiver"); /* alles was der Service liefert */ String action = intent.getAction(); Double altitude = intent.getDoubleExtra("altitude", 0); Double longitude = intent.getDoubleExtra("longitude", 0); Double latitude = intent.getDoubleExtra("latitude", 0); Bundle b = intent.getExtras(); Location location = (Location)b.get("location"); Log.d("received","Receiver: "+longitude+" ; "+latitude); //Log.d("TrackingActivity", "vor GeoPoint"); GeoPoint locGeoPoint = new GeoPoint(latitude, longitude); /* Erstelle Pfad */ if(isTracking){ path.add(locGeoPoint); myPath.addPoint(locGeoPoint); } //Log.d("TrackingActivity", "nach GeoPoint: "+locGeoPoint.toString()); mapController.setCenter(locGeoPoint); setOverlayLoc(location); /* Textviews Werte setzen */ lonTextView = (TextView) findViewById(R.id.textViewLonWert); lonTextView.setText(longitude.toString()); //lonTextView.invalidate(); latTextView = (TextView) findViewById(R.id.textViewLatWert); latTextView.setText(latitude.toString()); //latTextView.invalidate(); altTextView = (TextView) findViewById(R.id.textViewAltWert); altTextView.setText(altitude.toString()); //altTextView.invalidate(); accTextView = (TextView) findViewById(R.id.textViewAccWert); accTextView.setText(Float.toString(location.getAccuracy())+" m"); //accTextView.invalidate(); /* Karte aktualisieren */ mapView.invalidate(); } }; ... @Override protected void onResume() { super.onResume(); /* Registriere BroadcastReceiver für GPSDaten */ LocalBroadcastManager.getInstance(this).registerReceiver(gpsDataReceiver, new IntentFilter("gpsdata")); ... } ... 

Aquí mi diseño .xml:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/trackingLinearLayout" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <LinearLayout android:id="@+id/trackingStatusOuterWrapper" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" > <TextView android:id="@+id/textView1" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="kein GPS Signal" android:textAppearance="?android:attr/textAppearanceSmall" android:textSize="10sp" /> <LinearLayout android:id="@+id/trackingStautsInnerWrapper2" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <TextView android:id="@+id/textViewLonLabel" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Länge: " android:textAppearance="?android:attr/textAppearanceSmall" android:textSize="10sp" /> <TextView android:id="@+id/textViewLonWert" android:layout_width="80dp" android:layout_height="wrap_content" android:text="" android:textAppearance="?android:attr/textAppearanceSmall" android:textSize="10sp" /> <TextView android:id="@+id/textViewLatLabel" android:layout_marginLeft="40dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Breite: " android:textAppearance="?android:attr/textAppearanceSmall" android:textSize="10sp" /> <TextView android:id="@+id/textViewLatWert" android:layout_width="80dp" android:layout_height="wrap_content" android:text="" android:textAppearance="?android:attr/textAppearanceSmall" android:textSize="10sp" /> </LinearLayout> <LinearLayout android:id="@+id/trackingStautsInnerWrapper3" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <TextView android:id="@+id/textViewAltLabel" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Höhe: " android:textAppearance="?android:attr/textAppearanceSmall" android:textSize="10sp" /> <TextView android:id="@+id/textViewAltWert" android:layout_width="80dp" android:layout_height="wrap_content" android:text="" android:textAppearance="?android:attr/textAppearanceSmall" android:textSize="10sp" /> <TextView android:id="@+id/textViewAccLabel" android:layout_marginLeft="40dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Genauigkeit: " android:textAppearance="?android:attr/textAppearanceSmall" android:textSize="10sp" /> <TextView android:id="@+id/textViewAccWert" android:layout_width="80dp" android:layout_height="wrap_content" android:text="" android:textAppearance="?android:attr/textAppearanceSmall" android:textSize="10sp" /> </LinearLayout> </LinearLayout> <!-- <org.osmdroid.views.MapView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/mapview" android:layout_width="fill_parent" android:layout_height="match_parent" android:clickable="true"/> --> <LinearLayout android:id="@+id/trackingLinearLayoutMap" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > </LinearLayout> 

¡Espero eso ayude!

Nunca creerás esto, pero si te diriges a ¿Con qué frecuencia puedes actualizar una vista de texto sin desorden encontrarás una pregunta y respuesta que creo que están abordando el problema.

Si no resuelven el problema, es posible que deba reemplazar el botón con una vista personalizada con el onDraw anulado mediante canvas.drawText() para poner el texto en su lugar. A continuación, asegúrese de borrar cualquier historial anterior …

Si solo desea un fondo negro transparente, cree (o agregue) el archivo colors.xml en su directorio res :

 <resources> <color name="black">#ff000000</color> </resources> 

y añada:

  android:background="@color/black" 

Al xml para el TextView.

La línea android:text="" in

  <TextView android:id="@+id/textViewLonWert" android:layout_width="80dp" android:layout_height="wrap_content" android:text="" android:textAppearance="?android:attr/textAppearanceSmall" android:textSize="10sp" /> 

Es redundante, puede quitar esa línea.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.