2017-07-05 5 views
0

Ich mache eine statische Klasse, so dass ich es in verschiedenen Aktivitäten zugreifen kann. Ich muss 1 Daten an eine andere Aktivität übergeben, aber ich weiß nicht, um es richtig zu machen. Ich habe versucht, zusätzliche Dinge zu setzen, aber es ist für die Weitergabe von Daten an die nächste Aktivität (nicht global (vielleicht)).Statische Klasse für viele Aktivitäten?

das ist meine Klasse ..

static class AuthorizedUserIdClass 
{ 
    private static Guid _authorizedUserId; 

    static Guid AuthorizedUserId 
    { 
     get { return _authorizedUserId; } 
     set { _authorizedUserId = value; } 
    } 
    static AuthorizedUserIdClass() 
    { 
     AuthorizedUserId = _authorizedUserId; 
    } 

} 

ist es richtig? dann, wie man es in der Tätigkeit benutzt? und wie die gefüllten Daten in einer anderen Aktivität aufgerufen werden?

Vielen Dank im Voraus :)

Antwort

1

Fügen Sie zusätzliche Daten eine Aktivität zu einer anderen Aktivität.Wenn Sie Wert auf ganze Anwendung Etikett zugreifen möchten, können Sie globale Variable verwenden wie

  1. erstellen eine Klasse von Anwendungs ​​erweitern zum Speichern von Wert Anwendung Etikett

    public class GlobalVariable extends Application { 
    
        private String message; 
    
        public String getMessage() { 
         return message; 
        } 
    
        public void setMessage(String message) { 
         this.message = message; 
        } 
    } 
    
  2. hinzufügen GlobalVariable zu AndroidManifest.xml

    <application 
        android:name=".GlobalVariable"  
        android:icon="@mipmap/ic_launcher" 
        android:label="@string/app_name"> 
        //........ 
    </application> 
    
  3. Sollwert auf globale Variable wie

    GlobalVariable globalVariable = ((GlobalVariable) getApplicationContext()); 
    globalVariable.setMessage("Hello"); 
    
  4. Schließlich bekommen Wert von Aktivität wie

    GlobalVariable globalVariable = ((GlobalVariable)getApplicationContext()); 
    Stirng message = globalVariable.getMessage(); 
    
0

Sie direkt, wo immer in Ihrer Aktivität oder ein Fragment wollen wie diese

Guid value = AuthorizedUserIdClass._authorizedUserId; 
0

Soweit ich Ihren Fall verstanden verwenden kann ich glaube, Sie einige globale Daten speichern möchten und möchte in verschiedenen Aktivitäten zugreifen.

Also was ich vorschlagen werde, ist die Anwendung Klasse zu verwenden. Wie es heißt,

Die Application-Klasse in Android ist die Basisklasse innerhalb einer Android-App, die alle anderen Komponenten wie Aktivitäten und Services enthält. Die Application-Klasse oder eine Unterklasse der Application-Klasse wird vor jeder anderen Klasse instanziiert, wenn der Prozess für Ihre Anwendung/Ihr Paket erstellt wird.

Lesen Sie mehr here und this ist die beste Frage auf, so dass Ihr Fall entsprechen die Daten zu speichern.

Bitte versuchen Sie dies und wenn Sie irgendein anderes Problem finden dann mich

+0

und der nächste Abschnitt der docs Sie zitieren ist: * "Hinweis: Es ist in der Regel nicht erforderlich, Anwendungsunterklasse. In den meisten Situationen können statische Singletons die gleiche Funktionalität auf eine modulare Art und Weise bieten. "*, Https://developer.android.com/reference/android/app/Application.html – pskink

+0

Ja, in vielen Fällen können und sollten wir verwenden Die Application-Klasse als Singleton –

+0

** Hinweis: Es gibt normalerweise keine Notwendigkeit, Anwendung subclass. ** In den meisten Situationen können statische Singletons die gleiche Funktionalität in einer modularen Weise – pskink

1

wissen lassen, Aktivitäten, um die Datenübertragung zwischen Ihnen die Absicht verwenden können. Versuchen Sie einfach

intent.putExtra(key, value); 

Auf diese Weise können Sie das an eine andere Aktivität übergeben.

Außerdem können Sie Einstellungen verwenden. Benutzereinstellungen sind eine andere Möglichkeit, "globale" Variablen und Sachen zu speichern, ist auch besser als eine statische Klasse.

Sie können überprüfen, wie Sie diese im Detail in developer.android.com verwenden Wenn Sie jedoch eine statische Klasse verwenden müssen, um diese Variablen aufzurufen, können Sie die Klasse direkt aufrufen. Wie zum Beispiel wird die Klasse Util genannt wird, dann können Sie nur

Util.publicmethod(); 
int c = Util.publicIntVariable 
+0

Absicht mit var int gefüllt = neue Absicht (dies, typeof ("sampleActivity")); soo, nur in der nächsten Aktivität können wir den Wert von extra bekommen? –

+1

Es ist so. 'Intent Absicht = new Intent (this, sampleActivity.class) intent.putExtra ("somevalue", "Wert") startActivity (Vorsatz) Dann in der nächsten Aktivität Sie kann nur String v = getIntent() .getExtras(). getString ("someValue") ' v wird" Wert "sein – EduardoMaia

1
public class AuthorizedUserIdClass 
{ 
    private static AuthorizedUserIdClass instance; 

    public static AuthorizedUserIdClass getInstance() { 
     if (instance == null) { 
      instance = new AuthorizedUserIdClass(); 
     } 
     return instance; 
    } 
    private static Guid _authorizedUserId; 

    static Guid AuthorizedUserId 
    { 
     get { return _authorizedUserId; } 
     set { _authorizedUserId = value; } 
    } 

} 

in Ihrem activitys nennen.

AuthorizedUserIdClass authorizedUserIdClass = AuthorizedUserIdClass.getInstance(); 
authorizedUserIdClass.set(value); 
authorizedUserIdClass.get(); 
+0

AuthorizedUserIdClass authorizedUserIdClass = AuthorizedUserIdClass.getInstance(); authorizedUserIdClass.set (UserInfo.ID); –

Verwandte Themen