2017-11-17 5 views
0

Ich habe eine Karte googlee KlasseWas tun mit erforderlichen, aber leeren Implementierungen?

class MapActivity : FragmentActivity(), OnMapReadyCallback, LocationListener, GoogleApiClient.ConnectionCallbacks, 
    GoogleApiClient.OnConnectionFailedListener { 

aber ich nur einige der erforderlichen Funktionen durch die Implementierungen zur Verfügung gestellt verwenden. Alle nicht verwendeten Methoden i nur Platz am unteren Rand der Klasse, wie folgt aus:

override fun onConnected(p0: Bundle?) { 
    checkLocationPermission() 
    val mLocationProvider = FusedLocationProviderClient(this) 

    mLocationProvider.lastLocation.addOnCompleteListener { task -> 
     goToLocation(task.result.latitude, task.result.longitude) 
    } 

} 

override fun onStatusChanged(provider: String?, status: Int, extras: Bundle?) { 
    //To change body of created functions use File | Settings | File Templates. 
} 

override fun onProviderEnabled(provider: String?) { 
    //To change body of created functions use File | Settings | File Templates. 
} 

override fun onProviderDisabled(provider: String?) { 
    //To change body of created functions use File | Settings | File Templates. 
} 

override fun onConnectionSuspended(p0: Int) { 
    //To change body of created functions use File | Settings | File Templates. 
} 

override fun onConnectionFailed(p0: ConnectionResult) { 
    //To change body of created functions use File | Settings | File Templates. 
} 

Gibt es eine bessere Art und Weise dieser unerwünschten erforderlichen Funktionen zu entlassen?

+0

Sie können eine übergeordnete Klasse erstellen, um diese Schnittstellen zu implementieren, sodass Ihre übergeordnete Klasse über diese leeren Methoden verfügt, die untergeordnete Klasse jedoch sauber ist. – diegoveloper

+0

@diegoveloper und dann implementiere ich stattdessen diese Klassen? Ich nehme an, das ist eine Lösung :) Irgendwelche anderen? Ich hatte auf eine einfache schnelle Lösung gehofft, um der Klasse mitzuteilen, dass sie einfach die Super-Implementierung verwenden soll, wenn nicht anders angegeben. –

Antwort

1

Nein, Sie können nichts tun (außer eine andere Klasse erstellen, wie vorgeschlagen ...), dies ist der typische Kompromiß des Schnittstelle Trennung Prinzip.

Wie auch immer, wenn Sie für Standortwechsel Update Verwendung hören müssen, um

import com.google.android.gms.location.LocationListener; 

die Ihnen sagen, implementieren nur

void onLocationChanged(Location var1); 

Ich schlage vor, Sie auch #region und Zusammenbruch Code auf Ihrem Editor verwenden zu reinigen visuell deine Klasse.

Ich hoffe, es hilft.

0

Sie müssen alle Methoden von Interface implementieren.

Aber ja, im Falle der Code-Reinigung, können Sie eine zusätzliche class für die Implementierung aller Methoden von interface haben. Und verwende diese Klasse mit deinem Original.

Click here für weitere Informationen.