在我的一个Android应用程序中,我需要保持标题栏相同,但屏幕其余部分显示的视图会发生变化。所以,我为所有需要显示的视图采取了不同的Activity,并在每个Activities onCreate方法中设置标题栏。
现在,问题是我在标题栏中有一个按钮,需要对其点击事件执行某些操作。在每个Activity类中编写相同的事件处理代码非常麻烦。有没有其他的方法,只要标题栏的那个按钮上有一个点击事件,那么我们可以拥有相同的功能,而无需在所有的Activity类中编写相同的代码。
我们可以使用ViewGroup吗?我对ViewGroup不太了解。这可以用ViewGroup吗?
如果有人知道解决方案,那么请告诉我。
谢谢&问候 苏尼
答案 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);
}
}