相同的标题栏,但在Android下面的不同视图?

时间:2010-04-09 14:43:56

标签: android button android-activity

在我的一个Android应用程序中,我需要保持标题栏相同,但屏幕其余部分显示的视图会发生变化。所以,我为所有需要显示的视图采取了不同的Activity,并在每个Activities onCreate方法中设置标题栏。

现在,问题是我在标题栏中有一个按钮,需要对其点击事件执行某些操作。在每个Activity类中编写相同的事件处理代码非常麻烦。有没有其他的方法,只要标题栏的那个按钮上有一个点击事件,那么我们可以拥有相同的功能,而无需在所有的Activity类中编写相同的代码。

我们可以使用ViewGroup吗?我对ViewGroup不太了解。这可以用ViewGroup吗?

如果有人知道解决方案,那么请告诉我。

谢谢&问候 苏尼

2 个答案:

答案 0 :(得分:1)

如果要在扩展Activity的多个类之间共享视图元素和功能,您可能需要考虑创建一个共同的超类来处理这种重叠。

答案 1 :(得分: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);
            }

        }