Tôi đang phân phối ORMlite. Vì vậy, tôi có lớp Factory DAO nàyLỗi ứng dụng với “android.app.Application không thể truyền tới”
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;
}
}
}
Và trong Main, tôi sẽ chỉ đường này, nơi tôi có vấn đề:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
dtoFactory = (DtoFactory) getApplication();
Và 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>
Lỗi thông báo là:
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
Bạn có thể hãy giúp tôi giải quyết vấn đề này?
Vấn đề là cũng giống như thông điệp cho biết, bạn đang cố gắng để cast android.app.Application để com.exercice .ormdatabase.DtoFactory, và điều này không thành công. DtoFactory là một phân lớp của android.app.Application, vì vậy bạn có thể cast các đối tượng DtoFactory vào android.app.Application, nhưng không phải ngược lại. Hãy nghĩ về nó, thông tin còn thiếu đến từ đâu? – bgse