Android Studio: как показать 2 действия на одном экране одновременно? - PullRequest
1 голос
/ 22 марта 2020

Так что я использую навигационный ящик, который является моим MainActivity. Когда я нажимаю на один из вариантов, он должен выполнить действие, которое показывает список событий. Меню ящика должно быть видно сверху.

В данный момент он открывает список действий поверх MainActivity, чтобы они были отдельными и не отображались одновременно, как вы можете видеть на следующих снимках экрана:

Навигационный ящик 1

Активность в списке событий 2

Это MainActivity, отображаемое после закрытия окна активности в списке событий при нажатии кнопки возврата 3

Это мой 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);
}

}

Так что в основном я хочу открыть то, что вы видите в № 2 в № 3. Как мне это сделать? Я уже пытался использовать фрагменты, но это должно быть действие из-за того, как приложение будет работать позже. Так что это не вариант.

(Android Начинающий, между прочим: °))

Спасибо!

Ответы [ 2 ]

0 голосов
/ 23 марта 2020

U может использовать фрагменты с пейджером просмотра

0 голосов
/ 22 марта 2020

Одновременно может выполняться только одно действие. Ваш случай требует фрагментации.

Пожалуйста, смотрите документацию по использованию фрагментов. Если вам нужна помощь, дайте мне знать.

...