Barrachiel Byzanz
- Forum-Beiträge: 12
15.02.2011, 12:39:07 via Website
15.02.2011 12:39:07 via Website
Hallo Leute,
ich habe mich durch das halbe (vielleicht auch 3/4tel) Internet gewuehlt und finde dennoch keine Antwort auf mein Problem. Nach etlichem hin und her, Troubleshooting und einem Anfall von Verzweiflung habe ich mich jetzt hier angemeldet und hoffe, dass mir hier jemand eine Hilfestellung dazu geben kann...
Entwickelt wird das ganze auf Android 1.5
Zu meinem Problem:
Einleitung
Ich arbeite mit einem Studienkollegen an einem Projekt in Form einer AndroidApplication. Er hat sich das ganze Grundgeruest ausgedacht und auch schon alle Klassen erstellt und damit angefangen zu programmieren. Aus irgendeinem Grund hat er allerdings nicht die AndroidConventions eingehalten und das meiste nicht mit Activities gemacht, sondern mit Views - trotzdem gibt es (Gott sei Dank) zumindest eine Activity, naemlich die MainActivity. Diese dient als Controller fuer alles und wird auch bei jeder Klasse im Constructor initiiert.
(Soviel um euch mal einen kleinen (halbwegs verstaendlichen) Einblick in die Architektur zu geben).
Problemstellung:
Wir muessen in diesem Projekt so viele Parameter wie moeglich in einem SettingsMenu zugaenglich und vom User einstellbar machen. Dafuer habe ich mal angefangen eine Klasse UserSettings extends PreferenceActivity zu erstellen. Damit das ganze auch ordentlich laueft habe ich in res auch die dateien res/xml/settings.xml, res/menu/menu.xml, und res/values/arrays.xml erstellt. Ausserdem habe ich die Activity im Manifest.xml hinzugefuegt. Das ganze habe ich dann mal mit einer PreferenceList ausgestattet und wollte das gleich mal von der MainActivity aus starten.
Meine Infrastruktur sieht also so aus:
+ MainActivity extends Activity
+ UserPreference extends PreferenceActivity
+ res/xml/settings.xml
+ res/menu/upmenu.xml
+ res/values/arrays.xml
+ AndroidManifest.xml
Wenn ich jetzt am Emulator (oder am Device selbst (HTC Desire HD)) auf "Menu" druecke, wird mir das MenuItem angezeigt, sobald ich aber darauf druecke, crasht die ganze Anwendung und kommt mit folgendem Fehler im logcat daher:
Warum? Ich sehe da den Fehler einfach nicht? Hat hier jemand Erfahrung mit sowas und kann mir vielleicht einen Tipp geben?
Vielen Dank im Vorhinein fuer eure Zeit
cheers
Barrachiel
ich habe mich durch das halbe (vielleicht auch 3/4tel) Internet gewuehlt und finde dennoch keine Antwort auf mein Problem. Nach etlichem hin und her, Troubleshooting und einem Anfall von Verzweiflung habe ich mich jetzt hier angemeldet und hoffe, dass mir hier jemand eine Hilfestellung dazu geben kann...
Entwickelt wird das ganze auf Android 1.5
Zu meinem Problem:
Einleitung
Ich arbeite mit einem Studienkollegen an einem Projekt in Form einer AndroidApplication. Er hat sich das ganze Grundgeruest ausgedacht und auch schon alle Klassen erstellt und damit angefangen zu programmieren. Aus irgendeinem Grund hat er allerdings nicht die AndroidConventions eingehalten und das meiste nicht mit Activities gemacht, sondern mit Views - trotzdem gibt es (Gott sei Dank) zumindest eine Activity, naemlich die MainActivity. Diese dient als Controller fuer alles und wird auch bei jeder Klasse im Constructor initiiert.
(Soviel um euch mal einen kleinen (halbwegs verstaendlichen) Einblick in die Architektur zu geben).
Problemstellung:
Wir muessen in diesem Projekt so viele Parameter wie moeglich in einem SettingsMenu zugaenglich und vom User einstellbar machen. Dafuer habe ich mal angefangen eine Klasse UserSettings extends PreferenceActivity zu erstellen. Damit das ganze auch ordentlich laueft habe ich in res auch die dateien res/xml/settings.xml, res/menu/menu.xml, und res/values/arrays.xml erstellt. Ausserdem habe ich die Activity im Manifest.xml hinzugefuegt. Das ganze habe ich dann mal mit einer PreferenceList ausgestattet und wollte das gleich mal von der MainActivity aus starten.
Meine Infrastruktur sieht also so aus:
+ MainActivity extends Activity
1@Override
2 public boolean onCreateOptionsMenu(Menu menu) {
3 super.onCreateOptionsMenu(menu);
4
5 MenuInflater inflater = getMenuInflater();
6 inflater.inflate(at.fhb.g.main.R.menu.upmenu, menu);
7
8 return true;
9 }
10
11 @Override
12 public boolean onOptionsItemSelected(MenuItem item) {
13 super.onOptionsItemSelected(item);
14
15 switch(item.getItemId()) {
16 case R.id.usersettings:
17 loger.debug(TAG, "SHOULD START PREFERENCE-ACTIVITY");
18 startActivity(new Intent(this, UserPreference.class));
19 return true;
20 }
21
22 return false;
23 }
2 public boolean onCreateOptionsMenu(Menu menu) {
3 super.onCreateOptionsMenu(menu);
4
5 MenuInflater inflater = getMenuInflater();
6 inflater.inflate(at.fhb.g.main.R.menu.upmenu, menu);
7
8 return true;
9 }
10
11 @Override
12 public boolean onOptionsItemSelected(MenuItem item) {
13 super.onOptionsItemSelected(item);
14
15 switch(item.getItemId()) {
16 case R.id.usersettings:
17 loger.debug(TAG, "SHOULD START PREFERENCE-ACTIVITY");
18 startActivity(new Intent(this, UserPreference.class));
19 return true;
20 }
21
22 return false;
23 }
+ UserPreference extends PreferenceActivity
1@Override
2 protected void onCreate(Bundle savedInstanceState) {
3 super.onCreate(savedInstanceState);
4 addPreferencesFromResource(at.fhb.g.main.R.xml.settings);
5// wrote whole packagename to make shure that it's not android.R. which is going to be used
6 }
2 protected void onCreate(Bundle savedInstanceState) {
3 super.onCreate(savedInstanceState);
4 addPreferencesFromResource(at.fhb.g.main.R.xml.settings);
5// wrote whole packagename to make shure that it's not android.R. which is going to be used
6 }
+ res/xml/settings.xml
+ res/menu/upmenu.xml
1<?xml version="1.0" encoding="utf-8"?>
2<menu
3 xmlns:android="http://schemas.android.com/apk/res/android">
4
5 <item
6 android:id="@+id/usersettings"
7 android:title="@string/usersettings_title"
8 android:alphabeticShortcut="@string/usersettings_shortcut"
9 android:icon="@android:drawable/ic_menu_preferences"></item>
10
11</menu>
2<menu
3 xmlns:android="http://schemas.android.com/apk/res/android">
4
5 <item
6 android:id="@+id/usersettings"
7 android:title="@string/usersettings_title"
8 android:alphabeticShortcut="@string/usersettings_shortcut"
9 android:icon="@android:drawable/ic_menu_preferences"></item>
10
11</menu>
+ res/values/arrays.xml
+ AndroidManifest.xml
1<?xml version="1.0" encoding="utf-8"?>
2<manifest xmlns:android="http://schemas.android.com/apk/res/android"
3 package="at.fhb.g.main"
4 android:versionCode="1"
5 android:versionName="1.0">
6 <application android:label="@string/app_name" android:icon="@drawable/gprojectitem" android:debuggable="true">
7 <activity android:name=".MainControler"
8 android:label="@string/app_name"
9 android:screenOrientation="portrait"> <!-- to prevent the application from switching into 'landscape' mode -->
10 <intent-filter>
11 <action android:name="android.intent.action.MAIN" />
12 <category android:name="android.intent.category.LAUNCHER" />
13 </intent-filter>
14 </activity>
15 <activity android:name=".UserPreference"
16 android:label="@string/usersettings_title">
17 </activity>
18</application>
19 <uses-sdk android:minSdkVersion="3" />
20<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
21<!-- added for logging to sdcard -->
22<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
23<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>
24</manifest>
2<manifest xmlns:android="http://schemas.android.com/apk/res/android"
3 package="at.fhb.g.main"
4 android:versionCode="1"
5 android:versionName="1.0">
6 <application android:label="@string/app_name" android:icon="@drawable/gprojectitem" android:debuggable="true">
7 <activity android:name=".MainControler"
8 android:label="@string/app_name"
9 android:screenOrientation="portrait"> <!-- to prevent the application from switching into 'landscape' mode -->
10 <intent-filter>
11 <action android:name="android.intent.action.MAIN" />
12 <category android:name="android.intent.category.LAUNCHER" />
13 </intent-filter>
14 </activity>
15 <activity android:name=".UserPreference"
16 android:label="@string/usersettings_title">
17 </activity>
18</application>
19 <uses-sdk android:minSdkVersion="3" />
20<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
21<!-- added for logging to sdcard -->
22<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
23<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>
24</manifest>
Wenn ich jetzt am Emulator (oder am Device selbst (HTC Desire HD)) auf "Menu" druecke, wird mir das MenuItem angezeigt, sobald ich aber darauf druecke, crasht die ganze Anwendung und kommt mit folgendem Fehler im logcat daher:
1D/MAIN_CONTROLER( 2920): SHOULD START PREFERENCE-ACTIVITY
2D/AndroidRuntime( 2920): Shutting down VM
3W/dalvikvm( 2920): threadid=1: thread exiting with uncaught exception (group=0x40025a70)
4I/ActivityManager( 1299): Starting activity: Intent { cmp=at.fhb.g.main/at.fhb.g.userconfig.UserPreference }
5E/AndroidRuntime( 2920): FATAL EXCEPTION: main
6E/AndroidRuntime( 2920): android.content.ActivityNotFoundException: Unable to find explicit activity class {at.fhb.g.main/at.fhb.g.userconfig.UserPreference}; have you declared this activity in your AndroidManifest.xml?
2D/AndroidRuntime( 2920): Shutting down VM
3W/dalvikvm( 2920): threadid=1: thread exiting with uncaught exception (group=0x40025a70)
4I/ActivityManager( 1299): Starting activity: Intent { cmp=at.fhb.g.main/at.fhb.g.userconfig.UserPreference }
5E/AndroidRuntime( 2920): FATAL EXCEPTION: main
6E/AndroidRuntime( 2920): android.content.ActivityNotFoundException: Unable to find explicit activity class {at.fhb.g.main/at.fhb.g.userconfig.UserPreference}; have you declared this activity in your AndroidManifest.xml?
Warum? Ich sehe da den Fehler einfach nicht? Hat hier jemand Erfahrung mit sowas und kann mir vielleicht einen Tipp geben?
Vielen Dank im Vorhinein fuer eure Zeit
cheers
Barrachiel
— geändert am 15.02.2011, 12:50:04
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.