Android Studio:如何在一个屏幕上同时显示2个活动?

问题描述 投票:1回答:2

所以我使用的是我的MainActivity导航抽屉。当我单击其中一个选项时,应该执行一个显示事件列表的活动。抽屉菜单仍然应该在顶部可见。

目前,它正在MainActivity的顶部打开列表活动,以使它们分开且无法同时显示,如以下屏幕快照所示:

导航抽屉1

事件列表活动2

这是通过单击后退按钮3关闭事件列表活动窗口后显示的MainActivity>

这就是我的MainActivity,并使用selectDrawerItem方法导航到不同的活动:

public class MainActivity extends AppCompatActivity {

private DrawerLayout mDrawer;
private Toolbar toolbar;
private NavigationView nvDrawer;

// Make sure to be using androidx.appcompat.app.ActionBarDrawerToggle version.
private ActionBarDrawerToggle drawerToggle;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    // Set a Toolbar to replace the ActionBar.
    toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    // This will display an Up icon (<-), we will replace it with hamburger later
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

    // Find our drawer view
    mDrawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    drawerToggle = setupDrawerToggle();

    // Setup toggle to display hamburger icon with nice animation
    drawerToggle.setDrawerIndicatorEnabled(true);
    drawerToggle.syncState();

    // Tie DrawerLayout events to the ActionBarToggle
    mDrawer.addDrawerListener(drawerToggle);

    // Find our drawer view
    nvDrawer = (NavigationView) findViewById(R.id.nvView);
    // Setup drawer view
    setupDrawerContent(nvDrawer);
}

@Override
protected void onPostCreate(Bundle savedInstanceState) {
    super.onPostCreate(savedInstanceState);
    // Sync the toggle state after onRestoreInstanceState has occurred.
    drawerToggle.syncState();
}

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    // Pass any configuration change to the drawer toggles
    drawerToggle.onConfigurationChanged(newConfig);
}

private ActionBarDrawerToggle setupDrawerToggle() {
    // NOTE: Make sure you pass in a valid toolbar reference.  ActionBarDrawToggle() does not require it
    // and will not render the hamburger icon without it.
    return new ActionBarDrawerToggle(this, mDrawer, toolbar, R.string.navigation_drawer_open,  R.string.navigation_drawer_close);
}

private void setupDrawerContent(NavigationView navigationView) {
    navigationView.setNavigationItemSelectedListener(
            new NavigationView.OnNavigationItemSelectedListener() {
                @Override
                public boolean onNavigationItemSelected(MenuItem menuItem) {
                    selectDrawerItem(menuItem);
                    return true;
                }
            });
}

public void selectDrawerItem(MenuItem menuItem) {
    // Create a new fragment and specify the fragment to show based on nav item clicked
    FragmentActivity fragmentActivity = null;
    Intent intent = null;
    switch(menuItem.getItemId()) {
        case R.id.nav_first_fragment:
            intent = new Intent(MainActivity.this, Activity1.class);
            startActivity(intent);
            break;
        case R.id.nav_second_fragment:
            intent = new Intent(MainActivity.this, Activity2.class);
            startActivity(intent);
            break;
        case R.id.nav_third_fragment:
            intent = new Intent(MainActivity.this, Activity3.class);
            startActivity(intent);
            break;
        default:
            intent = new Intent(MainActivity.this, Activity1.class);
            startActivity(intent);
    }



    // Highlight the selected item has been done by NavigationView
    menuItem.setChecked(true);
    // Set action bar title
    setTitle(menuItem.getTitle());
    // Close the navigation drawer
    mDrawer.closeDrawers();
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    /*// The action bar home/up action should open or close the drawer.
    switch (item.getItemId()) {
        case android.R.id.home:
            mDrawer.openDrawer(GravityCompat.START);
            return true;
    }*/

    if (drawerToggle.onOptionsItemSelected(item)) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}

}

所以基本上我想打开在3号中的2号中看到的内容。我该怎么做?我已经尝试使用片段,但是由于应用程序以后将如何工作,它必须是一项活动。所以这不是一个选择。

((Android初学者btw:°))

谢谢!

所以我使用的是我的MainActivity导航抽屉。当我单击其中一个选项时,应该执行一个显示事件列表的活动。抽屉菜单仍应为...

android android-activity navigation-drawer
2个回答
0
投票

一次只能运行一个活动。您的案件需要分散处理。


0
投票

U可以在View pager中使用片段

© www.soinside.com 2019 - 2024. All rights reserved.