Android LocationListener -> ResourcesNotFoundException

tau

Mitglied
Hallo!
Ich arbeite gerade daran, mit einem LocationManager über einen zugehörigen LocationListener die aktuelle Position in ein Textfeld schreiben zu lassen. Folgender Quelltext ist bisher entstanden:

Java:
public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		final TextView tv = (TextView) findViewById(R.id.textView1);
		LocationManager locationManager = (LocationManager) this
				.getSystemService(LOCATION_SERVICE);
		LocationListener locationListener = new LocationListener() {

			@Override
			public void onLocationChanged(Location location) {
				tv.setText((int)location.getTime());

			}

			@Override
			public void onProviderDisabled(String arg0) {
				// TODO Auto-generated method stub

			}

			@Override
			public void onProviderEnabled(String arg0) {
				// TODO Auto-generated method stub

			}

			@Override
			public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
				// TODO Auto-generated method stub

			}

		};
		
		locationManager.requestLocationUpdates
		(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}

Zugehöriges Layout:

Java:
<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"
    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=".MainActivity" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="77dp"
        android:layout_marginTop="134dp"
        android:text="Large Text"
        android:textAppearance="?android:attr/textAppearanceLarge" />

</RelativeLayout>

Und LogCat:

Code:
03-16 15:16:49.723: D/libEGL(18403): loaded /system/lib/egl/libEGL_adreno200.so
03-16 15:16:49.733: D/libEGL(18403): loaded /system/lib/egl/libGLESv1_CM_adreno200.so
03-16 15:16:49.743: D/libEGL(18403): loaded /system/lib/egl/libGLESv2_adreno200.so
03-16 15:16:49.753: I/Adreno200-EGL(18403): <qeglDrvAPI_eglInitialize:265>: EGL 1.4 QUALCOMM build: AU_LINUX_ANDROID_JB_2.5.04.02.02.040.400_msm8960_JB_2.5_CL3744273_release_AU (CL3744273)
03-16 15:16:49.753: I/Adreno200-EGL(18403): Build Date: 06/30/13 Sun
03-16 15:16:49.753: I/Adreno200-EGL(18403): Local Branch: 
03-16 15:16:49.753: I/Adreno200-EGL(18403): Remote Branch: quic/jb_2.5
03-16 15:16:49.753: I/Adreno200-EGL(18403): Local Patches: NONE
03-16 15:16:49.753: I/Adreno200-EGL(18403): Reconstruct Branch: AU_LINUX_ANDROID_JB_2.5.04.02.02.040.400 +  NOTHING
03-16 15:16:49.853: D/OpenGLRenderer(18403): Enabling debug mode 0
03-16 15:16:49.853: W/ResourceType(18403): No known package when getting value for resource number 0xcb408f67
03-16 15:16:49.853: D/AndroidRuntime(18403): Shutting down VM
03-16 15:16:49.853: W/dalvikvm(18403): threadid=1: thread exiting with uncaught exception (group=0x41832ae0)
[B]03-16 15:16:49.853: E/AndroidRuntime(18403): FATAL EXCEPTION: main
03-16 15:16:49.853: E/AndroidRuntime(18403): android.content.res.Resources$NotFoundException: String resource ID #0xcb408f67[/B]
03-16 15:16:49.853: E/AndroidRuntime(18403): 	at android.content.res.Resources.getText(Resources.java:236)
03-16 15:16:49.853: E/AndroidRuntime(18403): 	at android.widget.TextView.setText(TextView.java:3781)
03-16 15:16:49.853: E/AndroidRuntime(18403): 	at te.soaring.tau.MainActivity$1.onLocationChanged(MainActivity.java:26)
03-16 15:16:49.853: E/AndroidRuntime(18403): 	at android.location.LocationManager$ListenerTransport._handleMessage(LocationManager.java:255)
03-16 15:16:49.853: E/AndroidRuntime(18403): 	at android.location.LocationManager$ListenerTransport.access$000(LocationManager.java:184)
03-16 15:16:49.853: E/AndroidRuntime(18403): 	at android.location.LocationManager$ListenerTransport$1.handleMessage(LocationManager.java:200)
03-16 15:16:49.853: E/AndroidRuntime(18403): 	at android.os.Handler.dispatchMessage(Handler.java:99)
03-16 15:16:49.853: E/AndroidRuntime(18403): 	at android.os.Looper.loop(Looper.java:137)
03-16 15:16:49.853: E/AndroidRuntime(18403): 	at android.app.ActivityThread.main(ActivityThread.java:5099)
03-16 15:16:49.853: E/AndroidRuntime(18403): 	at java.lang.reflect.Method.invokeNative(Native Method)
03-16 15:16:49.853: E/AndroidRuntime(18403): 	at java.lang.reflect.Method.invoke(Method.java:511)
03-16 15:16:49.853: E/AndroidRuntime(18403): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:803)
03-16 15:16:49.853: E/AndroidRuntime(18403): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:570)
03-16 15:16:49.853: E/AndroidRuntime(18403): 	at dalvik.system.NativeStart.main(Native Method)
03-16 15:16:49.873: I/Process(18403): Sending signal. PID: 18403 SIG: 9

IDE: Eclipse (adt-bundle) auf Windows 8.1
Testgerät: Sony Xperia L (Stock-ROM)(JB 4.2.2)

Bis dahin schonmal vielen Dank fürs lesen, aus LogCat konnte ich noch herauslesen, dass der Fehler bei
Java:
tv.setText((int)location.getTime());
entsteht, auch wenn ich getTime() durch getLatitude()/ getHeight() ... ersetze.

Mit freundlichen Grüßen
 

dzim

Top Contributor
@hauptDev: Vielleicht hättest du noch erwähnen sollen, warum das so ist. Bin mir nicht sicher, ob @tau das auch verstanden hat, warum es schief gehen musste (soll keine Beleidigung sein @tau!).

Also. Nur zur Sicherheit: Mit deinem Cast nach int, hast du ungewollt die Methode mit der falschen Signatur angesprochen. Es gibt ja die mit String, um direkt einen Text zu setzen, und eben die mit int, um den Text aus deiner values.xml zu lesen - also eine Ressource zu verwenden. Da du hier einen mehr oder weniger zufälligen Wert verwendest ist es zwar nicht unmöglich, aber eben unwahscheinlich, dass du eine Zeichenkette aus derinem "R.srtring.*" triffst.
 

Neue Themen


Oben