2016-03-17 2 views
-1

Здесь я хочу добавить дом и метод выхода. Когда я выберу вариант выхода, приложение закроется (с R.id.exit), и когда я нажму кнопку дома, пользователь перейдет на главный экран (с R.id.homepage). Вот мой код:хочу добавить дом и выйти onclick метод

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
    fab.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) 
        .setAction("Action", null).show(); 
     } 
    }); 

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
      this, drawer, toolbar, 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.main, 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(); 
    FragmentManager fragmentManager = getFragmentManager(); 

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

    } else if (id == R.id.foodpage) { 
     //handle the food page here 
     fragmentManager.beginTransaction() 
       .replace(R.id.content_frame 
         , new FirstFragment()) 
       .commit(); 

    } else if (id == R.id.schedulepage) { 
     fragmentManager.beginTransaction() 
       .replace(R.id.content_frame 
       , new ScheduleFragment()) 
       .commit(); 

    } else if (id == R.id.emotionspage) { 
     fragmentManager.beginTransaction() 
       .replace(R.id.content_frame 
       , new EmotionsFragment()) 
       .commit(); 

    } else if (id == R.id.basicneedspage) { 
     fragmentManager.beginTransaction() 
       .replace(R.id.content_frame 
       , new BasicneedsFragment()) 
       .commit(); 

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

    } 

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

Приложение закрывается. вы можете уточнить. Вы можете назвать finish() в своей деятельности – Raghunandan

+0

что такое домашний экран? какой-то фрагмент или что? что вы показываете на этом главном экране? –

+0

Когда я нажал кнопку выхода. Я хочу выйти из приложения. –

ответ

0

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

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

      switch(id){ 
       case R.id.home: 
        //If you are in the same Activity 
        fragmentManager.beginTransaction() 
         .replace(R.id.content_frame 
           , new YourHomeFragment()) 
         .commit(); 
        //If you are in other activity and you call from fragment home page , just make intent to your Activity which holds home page 
        Intent intent = new Intent(getActivity(),YourActivityWhichHoldHomePage.class); 
        startActivity(intent); 

        break; 
       case R.id.foodpage: 
       //handle the food page here 
       fragmentManager.beginTransaction() 
         .replace(R.id.content_frame 
           , new FirstFragment()) 
         .commit(); 
        break; 
       case R.id.schedulepage: 
        fragmentManager.beginTransaction() 
         .replace(R.id.content_frame 
         , new ScheduleFragment()) 
         .commit();  
        break; 
       case R.id.emotionspage: 
        fragmentManager.beginTransaction() 
         .replace(R.id.content_frame 
         , new EmotionsFragment()) 
         .commit(); 
        break; 
       case R.id.basicneedspage: 
        fragmentManager.beginTransaction() 
         .replace(R.id.content_frame 
         , new BasicneedsFragment()) 
         .commit(); 
        break; 
       case R.id.exit: 
        //if you are in your activity close your app with 
         finish(); 
         //or if you are insome fragment use 
         getActivity().finish(); 
        break; 
      } 


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

я делаю это с switch case, потому что это более ясно, чтобы прочитать это, мое мнение, но вы можете сделать с if else конечно!

Надеюсь помочь!

+0

есть. оно работает. спасибо –

+0

да. он работает для финиша. но у меня есть небольшая проблема с домом. Я хочу вернуться в MainActivity, когда я нахожу дом. Я могу сделать это. –

+0

да просто делайте намерение MainActivity в корпусе R.id.home –