Reputation: 95
I'm really struggling with classes, extend and implement.
Well at android I want to create a preference screen and check the user input.
I can use therefore a file named preferences.class and do everything I need with the following class:
public class Preferences extends PreferenceActivity implements OnSharedPreferenceChangeListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sp, String key) {
}
}
But isn't it better to split this up in different classes? and if yes how?
Upvotes: 0
Views: 123
Reputation: 20323
You can have a PreferenceChangeListener
which implements OnSharedPreferenceChangeListener
and your Preference class will have a PrefernceChangeListener
public class Preference extends PreferenceActivity {
private PrefernceChangeListener prefernceChangeListener;
public void addPreferenceChangeListener(PrefernceChangeListener prefernceChangeListener){
this.prefernceChangeListener = prefernceChangeListener;
}
public PrefernceChangeListener getPrefernceChangeListener(){
return this.prefernceChangeListener;
}
}
On a general note if your class has a property which can be externalized you should try to use HAS A relationship, you will use IS A relationship when your class provides functionality on top of inherited values.
Most of the cases IS A can be avoided, unless your class doesnt has a meaning without inheritance favor HAS A over IS A relationship.
Prefer composition over inheritance
Upvotes: 2