2010-04-09 4 views
0

Dans l'une de mes applications Android, je dois conserver la même barre de titre, mais la vue affichée dans le reste de l'écran change. J'ai donc pris différentes activités pour toutes les vues dont j'ai besoin pour afficher et définir la barre de titre dans chaque méthode Activities onCreate.Même barre de titre mais différente Voir ci-dessous dans Android?

Maintenant, le problème est que j'ai un bouton dans la barre de titre et que j'ai besoin d'effectuer certaines actions sur son événement click. Écrire le même code de gestion d'événements dans chaque classe Activity est très lourd. Existe-t-il un autre moyen d'éviter que chaque fois qu'il y a un événement click sur ce bouton de la barre de titre, nous pouvons avoir la même fonctionnalité sans écrire le même code dans toutes les classes Activity. Pouvons-nous utiliser ViewGroup pour cela?

Je n'ai pas beaucoup d'idée sur ViewGroup. Est-ce possible avec ViewGroup?

Si quelqu'un connaît la solution, veuillez me le faire savoir.

Merci & Cordialement Sunil

Répondre

1

Si vous partagez des éléments d'affichage et la fonctionnalité entre plusieurs classes s'étendant Activity, vous voudrez peut-être envisager de faire une superclasse commune pour gérer ce chevauchement.

1

La meilleure solution est de conserver une activité de base comme celle-ci.

 public class HeaderBaseActivity extends AppCompatActivity{ 
     @Override 
      public boolean onCreateOptionsMenu(Menu menu) { 
       getMenuInflater().inflate(R.menu.menu_main, menu); 

       mAppPreferences = AppUtil.getAppPreferences(this); 
       item_patients = menu.findItem(R.id.item_patients); 
       setBatchCountOnMenu(0); 

       RealmConfiguration realmConfig = new RealmConfiguration.Builder(this).build(); 
       mRealm = Realm.getInstance(realmConfig); 
       mDotor = new Gson().fromJson(mAppPreferences.getString(Constants.SETTINGS_OBJ_DOCTOR, ""), Doctor.class); 
       mAppPreferences = AppUtil.getAppPreferences(this); 
       return super.onCreateOptionsMenu(menu); 

      } 

      @Override 
      public boolean onOptionsItemSelected(MenuItem item) { 
       switch (item.getItemId()) { 
        case R.id.action_logout: 
         /* DialogUtility.showShortToast(this, " Main manu Action Logout");*/ 
         SharedPreferences.Editor Editor = mAppPreferences.edit(); 
         Editor.putBoolean(Constants.SETTINGS_IS_LOGGED_IN, false); 
         Editor.apply(); 
         clearRealmDB(); 
         Intent loginIntent = new Intent(HeaderBaseActivity.this, LoginActivity.class); 
         loginIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); 
         startActivity(loginIntent); 
         finish(); 
         break; 
        case R.id.item_patients: 
         System.out.println("current activity "+getApplicationContext()); 
         Intent mPatientListIntent = new Intent(HeaderBaseActivity.this, PatientSummaryInfoActivity.class); 
         mPatientListIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
         startActivity(mPatientListIntent); 
         break; 

        case R.id.action_doctor_profile: 
         openDialogOfDoctorProfile(); 
         break; 
       } 
       return super.onOptionsItemSelected(item); 
      } 


     } 


    Your other activities can extend the above activity like this: 

     public class MainActivity extends HeaderBaseActivity{ 
     protected void onCreate(Bundle savedInstanceState) { 
       super.onCreate(savedInstanceState); 
       setContentView(R.layout.activity_main); 
       ButterKnife.bind(this); 
     setSupportActionBar(toolbar); 
      } 

     } 
Questions connexes