2013-09-16 8 views
5

Ich bin verrückt ORMlite. Also, ich habe diese DAO Factory-KlasseAnwendungsabsturz mit "android.app.Application kann nicht in umgewandelt werden"

public class DtoFactory extends Application { 

    private SharedPreferences preferences; 
    private DatabaseHelper databaseHelper = null; 

    private Dao<ReleveEntity, Integer> releveDAO = null; 

    @Override 
    public void onCreate() { 
      super.onCreate(); 
      preferences = PreferenceManager.getDefaultSharedPreferences(this); 
      databaseHelper = new DatabaseHelper(this); 
    } 

    public SharedPreferences getPreferences() {return preferences;} 

    public Dao<ReleveEntity, Integer> getReleveDao() throws SQLException, java.sql.SQLException { 
      if (releveDAO == null) { 
       releveDAO = databaseHelper.getDao(ReleveEntity.class); 
      } 
      return releveDAO; 
    } 

    @Override 
    public void onTerminate() { 
      super.onTerminate(); 
      if (databaseHelper != null) { 
        OpenHelperManager.releaseHelper(); 
        databaseHelper = null; 
      } 
    } 
} 

Und im Main, zeige ich nur diese Zeilen, wo ich das Problem:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    dtoFactory = (DtoFactory) getApplication(); 

Und die manifest.xml

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name="com.exercice.ftouzi.ReleveActivity" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity android:name="com.exercice.ormdatabase.DtoFactory" > 
    </activity> 
</application> 

Die Fehlermeldung lautet:

E/AndroidRuntime(19672): FATAL EXCEPTION: main 
E/AndroidRuntime(19672): java.lang.RuntimeException: Unable to start activity 
     ComponentInfo{com.formation.adapter/com.exercice.ftouzi.ReleveActivity}: 
     java.lang.ClassCastException: android.app.Application cannot be cast to 
     com.exercice.ormdatabase.DtoFactory 

können Sie Bitte hilf mir, das zu lösen?

+0

Das Problem ist nur, wie die Botschaft sagt, Sie versuchen, android.app.Application zu gieße com.exercice .ormdatabase.DtoFactory, und dies schlägt fehl. DtoFactory ist eine Unterklasse von android.app.Application, sodass Sie DtoFactory-Objekte in android.app.Application umwandeln können, aber nicht umgekehrt. Denken Sie darüber nach, woher würden die fehlenden Informationen kommen? – bgse

Antwort

29

Sie benötigen eine individuelle angeben Application (dh DtoFactory) in der AndroidManifest.xml

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" 
    android:name="com.exercice.ormdatabase.DtoFactory"> 
    <activity 
     android:name="com.exercice.ftouzi.ReleveActivity" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 
+0

Ich habe es gemacht, ich habe meine manifest.xml gepackt und ich arbeite nicht –

+0

Sie haben es als 'Aktivität' eingefügt, aber Sie müssen es als' Anwendung' angeben. Überprüfen Sie die aktualisierte Antwort. – Rajesh

+1

Du hast mein Leben gerettet! Danke Herr –

Verwandte Themen