0

Я новичок в чистом Android, исходя из Xamarin.Forms, так что действительно основной вопрос здесь. Я начал свой проект с шаблона ящика навигации, и я пытаюсь изменить экран «привет мир», который я вижу по умолчанию, когда я выбираю один из элементов ящика навигации. Я вижу, что в content_main.xml есть относительный макет, который определяет экран «Hello World». Как я могу переключить экран, который я вижу, скажем, на другой xml-макет? Что-то вроде этогоИзмените экран на элементе навигационного элемента нажмите

public boolean onNavigationItemSelected(MenuItem item) { 
    int id = item.getItemId(); 

    if (id == R.id.screen1) { 
     // set current screen to content_main.xml 
    } else if (id == R.id.screen2) { 
     // set current screen to my_new_screen.xml 
    } else if (id == R.id.screen3) { 
     // set current screen to my_other_new_screen.xml 
    } 

ответ

1

Вы можете начать новую активность на нажмом как этот

Intent intent = new Intent(CurrentActivity.this, NewActivity.class); 
startActivity(intent); 

или если вы используете фрагменты вы можете изменить фрагмент этого кодом

Fragment newFragment = new YourNewFragment(); 
FragmentTransaction transaction = getFragmentManager().beginTransaction(); 
transaction.replace(R.id.fragment_container_name, newFragment); 
transaction.commit(); 
0

Если у вас внедряют навигационный ящик, то, безусловно, вы будете использовать фрагменты. Таким образом, вы можете использовать ниже код: -

public boolean onNavigationItemSelected(MenuItem item) { 
    // Handle navigation view item clicks here. 
    Fragment fragment = null; 
    int id = item.getItemId(); 
    String get_title = item.getTitle().toString(); 

    if (id == R.id.nav_quick_list) { 

     fragment = new CreateQuickList(); 

    } else if (id == R.id.nav_my_account) { 
     fragment = new MyAccount(); 

    } 


    if (fragment != null) { 
     FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); 
     ft.replace(R.id.content_frame, fragment); 
     ft.commit(); 
    } 

    title_tv.setText(get_title); 
    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    drawer.closeDrawer(GravityCompat.START); 
    return true; 
} 
1

Вы можете сделать это

public void onDrawerItemSelected(View view, int position) { 
     displayView(position); 
    } 

    private void displayView(int position) { 
     Fragment fragment = null; 

     switch (position) { 
      case 0: 
       fragment = new OneFragment(); 
       break; 
      case 1: 
       fragment = new TwoFragment(); 
       break; 
      case 2: 
       fragment = new ThreeFragment(); 
       break; 


     } 

     if (fragment != null) { 
      FragmentManager fragmentManager = getSupportFragmentManager(); 
      FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
      fragmentTransaction.replace(R.id.container_body, fragment); 
      fragmentTransaction.commit(); 


     } 
    } 

Как вы использовали навигацию ящик вы должны создать фрагмент для каждого элемента ящика. Итак, начните с создания фрагмента и передайте его для отдельных элементов, как указано выше Удачи!

Смежные вопросы