2016-07-20 5 views
1

Hallo ich versuche, wenn Aussagen zu verschiedenen Aktivitäten zu Mittag essen. Der folgende Code scheint nicht sehr objektorientiert zu sein. Hat jemand wissen, eine Art und Weise, in der ich diese mehr opp machen kann, um die Störung zu erhalten („Variable Absicht haben nicht initialisiert“)Android | Wie würde ich diesen Code schreiben, um objektorientierter zu sein?

if (view.getId() == R.id.loadExistingBuildButton) { 
     intent = new Intent(this, LoadExistingBuildActivity.class); 
     startActivity(intent); 
    } else if (view.getId() == R.id.createNewBuildButton) 
     intent = new Intent(this, CreateNewBuildActivity.class); 
    startActivity(intent); 
} 
+0

Sie co Sie erwägen, das "Holen" des Klassentyps der Aktivität in eine separate Klasse (z. Factory Design Pattern) - dann sieht Ihr Code wie folgt aus: startActivity (new Intent (dies, BuildActivityFactory.getInstance(). getClassType (view.getId()))); – FishStix

Antwort

2
int id = view.getId(); 
if (id == R.id.loadExistingBuildButton) 
    startActivity(new Intent(this, LoadExistingBuildActivity.class); 
else if (id == R.id.createNewBuildButton) 
    startActivity(new Intent(this, CreateNewBuildActivity.class)); 

Sie können eine sonst Anweisung für eine hinzufügen Standardfall.

Wenn Sie mit viel am Ende, wenn/sonst ifs man bedenkt, könnte eine Methode, wie

public void runIntentActivity(Activity someName) 
{ 
     startActivity(new Intent(this, someName.class)); 
} 

mit so können Sie anrufen

runIntentActivity(LoadExistingBuildActivity) 

statt

startActivity(new Intent(this, LoadExistingBuildActivity.class); 

für jedes if/elseif

Verwandte Themen