La méthode getApp()
renvoie null
. Une idée pourquoi?Obtention de l'objet App renvoie une valeur nulle
public class App extends Application {
private static App app;
private BoxStore boxStore;
@Override
public void onCreate() {
super.onCreate();
app = this;
boxStore = MyObjectBox.builder().androidContext(App.this).build();
if(BuildConfig.DEBUG)
{
new AndroidObjectBrowser(boxStore).start(this);
}
}
public static App getApp() {
return app;
}
public BoxStore getBoxStore() {
return boxStore;
}
}
La méthode getApp()
est appelée à partir d'une activité comme ci-dessous:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
BoxStore boxStore = App.getApp().getBoxStore();
Box<ListEntryObject> listEntryObjectBox = boxStore.boxFor(ListEntryObject.class);
sharedPreferences = getSharedPreferences("TYPE_OF_ACTION", Context.MODE_PRIVATE);
editor = sharedPreferences.edit();
editor.putInt("sourceToDest", 0);
editor.apply();
sharedPreferences = getSharedPreferences("POSITION" , Context.MODE_PRIVATE);
editor = sharedPreferences.edit();
editor.putInt("position", 0);
editor.apply();
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
sharedPreferences = getSharedPreferences("TYPE_OF_ACTION", Context.MODE_PRIVATE);
editor = sharedPreferences.edit();
editor.putInt("sourceToDest", 0);
editor.apply();
fragmentManager = getSupportFragmentManager();
entryDialogFragment = new EntryDialogFragment();
entryDialogFragment.show(fragmentManager, "Sample Fragment");
}
});
entryObjectList = new ArrayList<>();
}
enregistrez le code où vous appelez cette méthode getApp –
@AbdulWaheed J'ai modifié. Vérifiez s'il vous plaît. –
vous devez ajouter votre classe d'application dans votre fichier manifeste android: name Le nom complet d'une sous-classe Application implémentée pour l'application. Lorsque le processus d'application est démarré, cette classe est instanciée avant l'un des composants de l'application. La sous-classe est facultative; la plupart des applications n'en auront pas besoin. En l'absence de sous-classe, Android utilise une instance de la classe Application de base. – Hector