-1
我已經制定了一個通用佈局,在每個活動中包含V7工具欄,並且它的常用類文件CommonToolbar.java
用於處理其屬性。包括appcompact v7工具欄錯誤
layout_common_toolbar.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar_common"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="@dimen/abc_action_bar_default_height_material"
android:background="?attr/colorPrimaryDark"/>
CommonToolbar.java
public class CommonToolbar {
Activity activity;
Toolbar toolbar;
CommonToolbar(Activity activity, View view, String title) {
super();
this.activity = activity;
toolbar = (Toolbar)view.findViewById(R.id.toolbar_common);
toolbar.setTitle(title);
toolbar.setTitleTextColor(activity.getResources().getColor(R.color.white));
}
void setNav() {
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
activity.onBackPressed();
}
});
}
void setMenuListner() {
toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
/* case R.id.searchItem:
Toast.makeText(getApplicationContext(), "Search", Toast.LENGTH_SHORT).show();
break;
case R.id.filterItem:
Toast.makeText(getApplicationContext(), "Filter", Toast.LENGTH_SHORT).show();
break;*/
}
return true;
}
});
toolbar.inflateMenu(R.menu.common_toolbar_menu);
}
}
使用它喜歡:
在佈局
<include android:layout_height="@dimen/abc_action_bar_default_height_material"
android:id="@+id/includeSurgicalDetail"
android:layout_width="match_parent"
layout="@layout/layout_common_actionbar"/>
在活動
View includedLayout = findViewById(R.id.includeSurgicalDetail);
CommonToolbar commonToolbar = new CommonToolbar(SurgicalDetail.this, includedLayout, pName);
commonToolbar.setMenuListner();
commonToolbar.setNav();
,但我得到了以下錯誤:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.greyline.eswasthyaprojectv3/com.eswasthyaV3.SurgicalDetail}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.Toolbar.setTitle(java.lang.CharSequence)' on a null object reference
發佈您的活動xml – juanhl
你爲什麼這麼奇怪?做一切活動,而不是其他班級,並告訴發生什麼。 – Harry
爲了避免在選項菜單代碼和每一件事情上多次寫入,我認爲這種方式會更有效。如果你有其他方式,建議我... –