2016-07-21 23 views

Antwort

1

Sie geben es nicht über Intent, und weder als Extra (da es nicht Parcelable ist) könnte man eine öffentliche getter Methode in Ihrer MainActivity erstellen und rufen Sie es in Ihrem ChildActivity ..

Beispielcode:

class MainActivity { 

    private static InputStream mInputStream; 

    @Override 
    protected onCreate(...) { 

     mInputStream = new InputStream(.....); 

     Intent i = new Intent(MainActivity.this, ChildActivity.class); 
     startActivity(i); 
    } 

    public static getInStream() { 
     return mInputStream; 
    } 
} 


class ChildActivity { 

    @Override 
    protected onCreate(...) { 
     InputStream theInputStream = MainActivity.getInStream(); 
    } 

} 

Imho, dass nicht die beste Lösung ist, aber es ist immer noch etwas, dachte ich nie so etwas wie eine Input zwischen Aktivitäten passieren würde ..

Wenn ich fragen kann, warum brauchen Sie das?


Lösung 2 - eine Helper-Klasse verwenden

Sie könnten eine SingletonHelper Klasse verwenden, um es Ihnen, den Überblick von Objekten halten müssen einfach zu machen.

Klasse Helper wird:

class Helper { 

    private static Helper mHelper; 
    private InputStream mInputStream; 

    private Helper(){ 

    } 


    public static Helper getInstance() { 
     if (mHelper != null) 
      return mHelper; 

     return new Helper(); 
    } 


    public void setInputStreamer(InputStream is){ 
     mInputStream = is 
    } 

    public InputStream getInputStreamer(){ 
     return mInputStream 
    } 
} 

Dann in Ihrem MainActivity Aufruf:

is = new InputStream(...); 
Helper.getInstance().setInputStreamer(is); 

Intent i = new Intent(MainActivity.this, ChildActivity.class); 
startActivity(i); 

Und in Ihrem ChildActivity Aufruf:

InputStream theInputStream = Helper.getInstance().getInputStreamer(); 
+0

Haupttätigkeit ist eine Excel-Datei zu lesen (Eingang stream) und ChildActivity liest Sheet eins nach dem anderen und ruft Funktionen auf, um die Daten zu plotten. Jedes Modul funktioniert separat, aber ich stecke hier fest – Atif

+0

Ich empfehle Ihnen, diese Logik außerhalb von Aktivitäten zu halten, Aktivität sollte ** nur ** verwendet werden, um Benutzerinteraktionen zu behandeln. Alles, was keine Benutzerinteraktion ist, sollte an andere Komponenten delegiert werden. Ich würde schreiben eine Klasse, die eine Datei nimmt, liest es und interagieren mit einer anderen Klasse, um die Blätter zu lesen. Dann definieren Sie geeignete Methoden zum Erstellen von Interaktionen zwischen Ihrer Aktivität und Ihrer "ExcelReader" -Klasse. – FredMaggiowski

+0

Hallo, als Ihren Vorschlag habe ich obige Technik verwendet, d. H., Ich mache sie zu einer statischen Variable. Sie gibt die Variable in einer anderen Klasse zurück, aber wenn ich sie benutzt, sagt sie Null-Wert-Referenz. – Atif