Использование панели навигации для разных действий с содержимым каждого действия

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

Это моя активность панели навигации::

public class navigationdrawer extends AppCompatActivity
    implements NavigationView.OnNavigationItemSelectedListener {

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



    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
            this, drawer,  R.string.navigation_drawer_open, R.string.navigation_drawer_close);
    drawer.setDrawerListener(toggle);
    toggle.syncState();

    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
    navigationView.setNavigationItemSelectedListener(this);
}

@Override
public void onBackPressed() {
    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    if (drawer.isDrawerOpen(GravityCompat.START)) {
        drawer.closeDrawer(GravityCompat.START);
    } else {
        super.onBackPressed();
    }
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.navigationdrawer, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}

@SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(MenuItem item) {
    // Handle navigation view item clicks here.
    int id = item.getItemId();

    if (id == R.id.nav_dashboard) {
        Intent i = new Intent(navigationdrawer.this, dashboard.class);
        startActivity(i);
        // Handle the camera action
    } else if (id == R.id.nav_community) {

    } else if (id == R.id.nav_recipes) {
        Intent i = new Intent(navigationdrawer.this, Recipe.class);
        startActivity(i);

    } else if (id == R.id.nav_leaderboard) {

    } else if (id == R.id.nav_upload) {

    } else if (id == R.id.nav_mypics) {

    } else if (id == R.id.nav_myvideos) {

    } else if (id == R.id.nav_settings) {

    } else if (id == R.id.nav_contactus) {

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

Это моя вторая деятельность:

public class Recipe extends navigationdrawer{

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
//        setContentView(new View(this));

//        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
//        setSupportActionBar(toolbar);


}



}

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


person Tarun Khatri    schedule 16.02.2016    source источник
comment
Вы расширяете новое действие, но переопределяете измененный метод.   -  person yennsarah    schedule 16.02.2016
comment
Вы имеете в виду, что если вы используете navigationdrawer напрямую, это работает?   -  person Elye    schedule 16.02.2016
comment
Да, если я расширяю второе действие и использую выражение super, оно действительно работает, но не позволяет мне включать содержимое второго действия, поскольку setcontentview уже используется в навигационном ящике, поэтому, если я расширяю второе действие в действие навигационного ящика, я не возможность использовать setcontentview. Как получить контент после продления?   -  person Tarun Khatri    schedule 16.02.2016


Ответы (1)


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

примечание: используйте представление фрагментов внутри вашей навигационной панели, например

if (id == R.id.nav_dashboard) {
    // write code for fragment replacement
}
person Dharmesh Dhameliya    schedule 16.02.2016
comment
Пожалуйста, правильно поймите мой вопрос, прежде чем отвечать. - person Tarun Khatri; 16.02.2016