我是Android Studio的新手(也是javascrips的新手),所以这可能是一个愚蠢的问题。
我不希望在可能的情况下多次维护相同的代码,这就是我尝试创建导航菜单的原因,以便在我的所有活动中使用。
到目前为止,我已经创建了一个" BaseActivity"它包含我的菜单的所有功能。这个工作正常。
现在我的问题:
在我的其他活动中,我无法让它显示出来(无论如何都不是没有问题)。在我看来,它似乎覆盖了布局。
我的基础(" BaseActivity"):
public class BaseActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {
private DrawerLayout mDrawerLayout;
private ActionBarDrawerToggle mToggle;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_base);
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout);
mToggle=new ActionBarDrawerToggle(this, mDrawerLayout, R.string.Open, R.string.Close);
mDrawerLayout.addDrawerListener(mToggle);
mToggle.syncState();
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
NavigationView NavigationView=(NavigationView)findViewById(R.id.navigation_view);
NavigationView.setNavigationItemSelectedListener(this);
}
@Override
public void setContentView(int layoutResID)
{
super.setContentView(R.layout.activity_base);
ViewGroup content = (ViewGroup) findViewById(R.id.navigation_view);
getLayoutInflater().inflate(layoutResID, content, true);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if(mToggle.onOptionsItemSelected(item)){
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
int id = item.getItemId();
if(id==R.id.nav_Home) {
startActivity(new Intent(this, MainActivity.class));
}
else
if(id==R.id.nav_Activity1) {
startActivity(new Intent(this, Activity1.class));
}
return super.onOptionsItemSelected(item);
}
}
如果我更改应用程序以开始此活动,则菜单有效,但布局似乎被覆盖(它是空的)。 当我尝试正常运行它(MainActivity)时,我遇到了一些问题。
MainActivity:
public class MainActivity extends BaseActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); }}
菜单图标在那里,但我无法点击它。
如果我删除了MainActivity中的代码,它就像以前一样工作(带有布局问题)。
我尝试过这样的事情:
public class MainActivity extends BaseActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ViewGroup content = (ViewGroup) findViewById(R.id.navigation_view);
getLayoutInflater().inflate(R.layout.activity_main, content, true);
}}
效果不佳。 MainActivity的布局似乎在菜单中实现。看起来很奇怪。
任何想法如何解决我的问题?