2010-12-06 13 views
2

Ich schreibe eine Android-App, wo ich ein String-Array zwischen zwei Klassen übergeben muss. Die Zeichenfolge initialisiert fein und ich kann den Inhalt der Zeichenfolge fein in der einen Klasse ausgeben, aber wenn ich versuche, es an eine andere Klasse zu übergeben, bekomme ich einen Null Pointer Exception Fehler. Das Folgende ist die abgespeckte Version von meinem Code:Übergeben eines String-Arrays zwischen Java-Klassen Android App

accelerometer.java:

public class accelerometer extends Service { 

public String movement[]; 

public void onCreate() { 

    movement = new String[1000000]; 

} 

public void updatearray() { 
    movement[arraypos]=getCurrentTimeString(); 
    //Toast.makeText(this, movement[arraypos] , Toast.LENGTH_SHORT).show(); //this correctly displays each position in the array every time it updates so I know the array is working correctly in this file 
    arraypos+=1; 
} 

public String[] getmovement(){ 
    return movement; 
} 
    } 

wakeupalarm.java:

public class wakeupalarm extends Activity { 

private TextView herestext_; 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.wakeup); 

    herestext_ = (TextView) findViewById(R.id.TextView01); 

    accelerometer accelerometercall = new accelerometer(); 

    String movearray[] = accelerometercall.getmovement(); 

    herestext_.setText(movearray[2]); 
    } 

    } 

Ich habe das Gefühl, mir fehlt etwas sehr einfach, aber jede Hilfe würde sehr geschätzt werden!

Danke,

Scott

Antwort

1

Sie eine neue Accelerometer-Klasse zu schaffen, das da völlig nicht initialisiert ist kein Konstruktor ist, dann greift man auf sein Mitglied. Natürlich ist es null.

Nicht sicher, wie Ihre zwei Klassen verwandt sind, aber wenn die Aktivität von dem Dienst aufgerufen wird, müssen Sie die Zeichenfolge durch die Absicht (durch ein Extra, beispielsweise) übergeben.

Randnotiz: Klassennamen sollten immer mit einem Großbuchstaben beginnen. Namen von Methoden/Variablen sollten camel case haben, d. H. "UpdateArray". Sie können Ihren Code hier auch formatieren, indem Sie ihn auswählen und STRG + K drücken.

+0

Ich bin ein Idiot. Danke für die Hilfe. – Scott

0

Ihr erstes Problem, denke ich, ist, dass Sie ein Array mit einer Million Slots darin erstellen. Willst du das wirklich machen? Es wird eine Menge Speicher benötigen - möglicherweise mehr als verfügbar ist. Sie sollten stattdessen einen Vector of Strings verwenden, den Sie bei Bedarf erweitern.

+0

Ich bezweifle, dass das Millionen-Slot-Array eine 'NullPointerException' ausgelöst hat. Wenn der OP nicht mehr genügend Arbeitsspeicher zur Verfügung hat, wird eine OutOfMemoryException oder ähnliches angezeigt. Obwohl ich stimme zu, dass es wahrscheinlich ein unnötig großes Array ist. – Asaph

+0

Ja, ich habe die Frage nicht beantwortet und mich sogar über den Programmierstil beschwert. – vy32

Verwandte Themen