在共享类中,无法直接设置onCreateOptionsMenu和onOptionsItemSelected来使用NavigationView。这是因为这些方法是Activity类的生命周期方法,只能在Activity类中重写。
为了解决这个问题,你可以创建一个基类,让Activity类继承这个基类,并在基类中实现NavigationView的相关逻辑。然后,在每个需要使用NavigationView的Activity中,只需要继承这个基类即可。
下面是一个示例代码:
public class BaseActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
protected void setupNavigationView(NavigationView navigationView) {
// 设置NavigationView的点击事件监听器
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
// 处理NavigationView的点击事件
switch (menuItem.getItemId()) {
case R.id.menu_item1:
// 处理菜单项1的点击事件
break;
case R.id.menu_item2:
// 处理菜单项2的点击事件
break;
// 其他菜单项...
}
return true;
}
});
}
}
然后,在需要使用NavigationView的Activity中,只需要继承BaseActivity,并在onCreate方法中调用setupNavigationView方法进行初始化:
public class MainActivity extends BaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 初始化NavigationView
NavigationView navigationView = findViewById(R.id.navigation_view);
setupNavigationView(navigationView);
}
}
这样,你就可以在每个需要使用NavigationView的Activity中共享相同的NavigationView逻辑了。