2014-08-30 18 views
9

Quindi ho seguito il corso di formazione per sviluppatori Android sul sito ufficiale e c'è un punto in cui vogliono che il nostro database venga istanziato.getContext() non esiste

Così ci dicono di usare questo frammento di codice:

FeedReaderDbHelper mDbHelper = new FeedReaderDbHelper(getContext()); 

Tuttavia, sto ricevendo un errore per il metodo getContext(). Dichiara che non può trovare un simbolo per quel metodo.

Così ho cercato l'origine e quel metodo nella classe View non può essere trovato. È un metodo deprecato? E se questa non è un'opzione, c'è un altro modo in cui possiamo afferrare il contesto di una vista?

Grazie!

+1

C'è un errore di battitura: 'geContext()'. È già questo il tuo problema? –

+0

Dipende da dove si usa questo snippet. È all'interno di attività o frammento o semplicemente classe? –

+0

@SME_Dev se quello era l'intero problema, morirò ridendo. – Gumbo

risposta

5

La riga di codice si passa è:

FeedReaderDbHelper mDbHelper = new FeedReaderDbHelper(geContext()); 


Dovrebbe funzionare se si sostituisce per una qualsiasi di queste righe di codice:

FeedReaderDbHelper mDbHelper = new FeedReaderDbHelper(getContext()); 

O

FeedReaderDbHelper mDbHelper = new FeedReaderDbHelper(getApplicationContext()); 

O

FeedReaderDbHelper mDbHelper = new FeedReaderDbHelper(this); 


La documentazione per gli sviluppatori Android del Contesto:

https://developer.android.com/reference/android/content/Context.html

Si potrebbe trovato utile anche guardare in questa questione, che spiega ciò che è Contesto per:

What is 'Context' on Android?

0

Nel codice che avete utilizzato geContext() modificarla in getContext() o getApplicationContext() o se chiamare l'oggetto da dentro un'attività semplicemente passare this

0

The View classe ha un metodo di getContext.

Si ha un errore di battitura o il codice non si trova in un metodo non statico di una sottoclasse di Vista.

+0

Posso usare getContext in una classe estesa da altre classi? ** Mi stanno facendo errori: ** http://snag.gy/hOPXk.jpg –

1

Ecco come l'ho fatto

  1. MainActivity contratto

    FeedReaderContract = new FeedReaderContract (questo);

  2. Ho modificato il costruttore della classe FeedReaderContract

    mDbHelper = new FeedReaderDbHelper (getContext());

  3. Il metodo getContext()

    contesto pubblico getContext() { contesto di ritorno; }

+2

Per favore, aggiungi una descrizione della soluzione che stai proponendo. –