J'essaie de concevoir une classe et une méthode abstraites dans Android et d'appeler ces méthodes en étendant la classe à partir de ma classe d'activité parent mais je ne sais pas comment appeler ma méthode abstraite.
MyCode:
MainActivity.Java
public class MainActivity extends MyActivity {
@Override
public void onTest() {
Log.d("MyLog", "onTest");
} }
MyActivity.Java
public abstract class MyActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public abstract void onTest(); }
Il s'agit donc de l'extrait de code ci-dessus, veuillez me faire savoir comment utiliser Abstract dans Android parce que je ne l'ai jamais fait auparavant.
Voici un exemple que vous pouvez utiliser pour vous inscrire et vous désinscrire [~ # ~] tout [~ # ~] BroadcastReceiver
en utilisant une classe abstraite:
BaseClass:
public abstract class BaseReceiverActivity extends AppCompatActivity{
private BroadCastReceiver receiver;
private IntentFilter filter;
public abstract BroadCastReceiver getReceiver();
public abstract IntentFilter getFilter();
@Override
public void onStart(){
super.onStart();
configureReceiver()
registerReceiver(receiver, filter);
}
@Override
public void onStop(){
super.onPause();
unregisterReceiver(receiver);
}
private void registerMyReceiver(){
registerReceiver(receiver, filter);
}
private void configureReceiver(){
receiver = getReceiver();
filter = getFilter();
}
}
Classe enfant:
public class WifiScanner extends BaseReceiverActivity{
@Override
public void onCreate(Bundle sis){
super.onCreate(sis);
setContentView(R.layout.yourLayout);
}
@Override
public BroadCastReceiver getReceiver(){
return new YourReceiver();
}
@Override
public IntentFilter getFilter(){
return IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
}
}
J'ai développé Exemple pour Classe abstraite:
Classe abstraite:
public abstract class BaseActivity extends Activity {
public static final String TAG = "Test";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(myView());
activityCreated();
}
public void printMessage(String message){
System.out.print(message);
}
public abstract int myView();
public abstract void activityCreated();
}
classe non abstraite qui étend la classe abstraite:
public class TestActivity extends BaseActivity {
@Override
public int myView() {
return R.layout.activity_main;
}
@Override
public void printMessage(String message) {
super.printMessage(message);
}
@Override
public void activityCreated() {
Log.i("TestActivity", "Created");
printMessage("Hello Hiren !!!");
}
}
Conclusion:
J'espère que cela aura du sens.
Je veux compléter Hiren Partel Répondez avec un exemple.
par exemple [~ # ~] dieu [~ # ~] contrôle sa créature sur Terre en implémentant cette interface (: D):
public interface َAliveCreature{
void breath();
void eat();
void move();
void die();
}
Et ceci est une classe abstraite en direct qui a une méthode publique et une méthode abstraite:
public abstract class MammalAbstract implements َAliveCreature{
public void feedBabyWithMilk(){
log.i(TAG,"baby was fed");
}
abstract void haveDream();
//this is an abstract method and had to implement in the consumer class
}
et c'est finalement la classe dirigée, humaine:
public class Human extends MammalAbstract {
@Override
void die() {
}
@Override
public void breath() {
}
@Override
public void eat() {
}
@Override
public void move() {
}
@Override
public void haveDream() {
}
}
comme vous pouvez le voir, l'humain devait implémenter la méthode abstraite haveDream()
et également implémenter les méthodes d'interface abstactclass! c'est donc la puissance d'une classe abstraite qui peut gérer et ajouter des méthodes et passer des méthodes d'interface de repos au consommateur et très utiles pour l'écriture de bibliothèques.