Android Studio - 所有活动的相同菜单(导航抽屉)

时间:2018-01-12 23:19:25

标签: android-layout android-studio navigation-drawer

我是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的布局似乎在菜单中实现。看起来很奇怪。

任何想法如何解决我的问题?

0 个答案:

没有答案