Le but de cette section est de vous apprendre à analyser les fichiers sources Java d'une application Android. Les fichiers sources Java représentent l'unité de contrôle d'un projet Android. Ils gèrent la partie dynamique d'un projet Android. Ils communiquent avec les vues pour récupérer les données, les traiter, les mettre à jour dans les vues et les sauvegarder en base.
Dans l'exemple qui suit, nous analyserons les sources Java de l'activité principale.
Implémentation de l'activité principale:
//===============================================
public class MainActivity extends AppCompatActivity {
//===============================================
private AppBarConfiguration appBarConfiguration;
private ActivityMainBinding binding;
//===============================================
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
setSupportActionBar(binding.toolbar);
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment_content_main);
appBarConfiguration = new AppBarConfiguration.Builder(navController.getGraph()).build();
NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration);
binding.fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAnchorView(R.id.fab)
.setAction("Action", null).show();
}
});
}
//===============================================
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
//===============================================
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
//===============================================
@Override
public boolean onSupportNavigateUp() {
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment_content_main);
return NavigationUI.navigateUp(navController, appBarConfiguration)
|| super.onSupportNavigateUp();
}
//===============================================
}
//===============================================
Un programme Android commence par une activité principale (MainActivity). La classe (AppCompatActivity) est la classe de base de toutes les activités. Elle permet d'accéder à certaines des fonctionnalités les plus récentes de la plate-forme sur des appareils Android plus anciens.
En Java, l'opérateur (extends) est utilisé pour indiquer que la classe en cours de définition est dérivée de la classe de base en utilisant l'héritage. Donc, fondamentalement, l'opérateur (extends) est utilisé pour étendre les fonctionnalités de la classe mére (AppCompatActivity) à la classe fille (MainActivity).
En Java, les héritages multiples ne sont pas autorisés en raison d'ambiguïté. Par conséquent, une classe ne peut étendre qu'une seule classe pour éviter toute ambiguïté.
Exemple d'utilisation:
//===============================================
public class MainActivity extends AppCompatActivity {
}
//===============================================
Lorsqu'une activité est appelée ou lancée pour la première fois, la méthode (onCreate) est chargée de créer l'activité.
Chaque fois que l'orientation de l'activité est modifiée ou lorsqu'une activité est interrompue de force par le système d'exploitation, l'objet de la classe Bundle (saveInstanceState) enregistrera l'état de l'activité. Une fois l'orientation modifiée, la méthode (onCreate) sera appelée, recréera l'activité et chargera toutes les données de l'objet de la classe Bundle (saveInstanceState). Fondamentalement, la classe Bundle est utilisée pour stocker les données d'activité chaque fois que la condition ci-dessus se produit dans l'application.
En Java, l'opérateur (@Override) est une fonctionnalité qui permet à une classe fille de fournir une implémentation spécifique d'une méthode déjà fournie par l'une de ses classes mères.
Exemple d'utilisation:
//===============================================
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
}
}
//===============================================
Une classe de liaison (Binding) est générée pour chaque fichier de mise en page. Par défaut, le nom de la classe est basé sur le nom du fichier de mise en page, en le convertissant en (camelCase) et en y ajoutant le suffixe (Binding). Le nom du fichier de mise en page de l'activité principale est (activity_main.xml), donc la classe générée correspondante est (ActivityMainBinding). Cette classe contient toutes les liaisons depuis les propriétés de mise en page jusqu'aux vues de la mise en page et sait comment attribuer des valeurs aux expressions de liaison.