2010-11-11 9 views
5

ich habe folgendes /res/values/uris.xmlNullpointer eine String-Ressource zuzugreifen versucht

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
<string name="bladder">blahblah</string> 
</resources> 

ich es im Code am Zugriff auf:

private String bladderUrl= getString(R.string.bladder); 

Aber es kehrt null. Ich bin mir nicht sicher warum?

Antwort

21

Mein raten Sie bladderUrl smth wie folgt platziert:

public class YourActivity extends Activity { 
    private String bladderUrl = getString(R.string.bladder); 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 

... 

Allerdings müssen Sie smth wie dies zu tun:

public class YourActivity extends Activity { 
    private String bladderUrl; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 

     bladderUrl = getString(R.string.bladder); 
... 
0

Stellen Sie zunächst sicher, dass diese Werte in der Datei strings.xml enthalten sind.

Sie können nicht auf die Zeichenfolgen aus dem Konstruktor zugreifen. Der Anwendungskontext ist noch nicht initialisiert. Sie sollten es in onCreate() tun.

Emmanuel

+0

Ich kann nicht auf meine private String von onCreate() zugreifen, es ist außerhalb des Geltungsbereichs ... –

+0

@Sheehan Alam dann höchstwahrscheinlich haben Sie Probleme mit App-Design. –

+0

Ich bin mir nicht sicher, ob ich das verstehe. Diese Zeichenfolge befindet sich in einer Aktivität, aber die onCreate() ist in der Unterklasse oder etwas? Verschieben Sie einfach Ihre Zeichenfolge in die Unterklasse oder machen Sie sie schreibgeschützt. Sie können von Ihrem Konstruktor aus nicht auf den Anwendungskontext zugreifen, so dass Sie dies später tun müssen. – Emmanuel

1

Zunächst einmal, dass zu klären. Sie müssen nicht haben alle Ihre Zeichenfolgen in strings.xml. Zeitraum.

Emmanuels Antwort ist teilweise richtig. Sie müssen die Zeichenfolge innerhalb Ihrer onCreate() Methode abrufen, wenn der Kontext initialisiert wird. Seine Antwort ist nur teilweise richtig, da er auch erwähnt, dass Sie die Strings innerhalb der strings.xml haben müssen, was nicht wahr ist.

Verwandte Themen