2010-04-09 59 views
0

在我的一個Android應用程序中,我需要保持標題欄相同,但屏幕其餘部分顯示的視圖發生更改。所以,我對所有需要顯示的視圖採取了不同的Activity,並在每個Activities onCreate方法中設置了標題欄。相同的標題欄但不同在Android下面查看它?

現在,問題是我在標題欄中有一個按鈕,需要對其單擊事件執行某些操作。在每個Activity類中編寫相同的事件處理代碼非常麻煩。有沒有其他的解決方案,只要標題欄上的按鈕發生點擊事件,我們就可以擁有相同的功能,而無需在所有活動類中編寫相同的代碼。

我們可以使用ViewGroup嗎?我對ViewGroup沒有太多的想法。 ViewGroup有可能嗎?

如果有人知道解決方案,請讓我知道。

感謝&問候 蘇尼爾

回答

1

如果共享視圖元素和功能擴展之中幾個Activity類,你可能要考慮制定一個共同的超類來處理這個重疊。

1

最好的解決方案是保持這樣的基本活動。

 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); 
      } 

     } 
相關問題