Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.whatamidoingwithmylife.splitbill;
- import android.app.Activity;
- import android.app.Application;
- import android.arch.lifecycle.LifecycleOwner;
- import android.arch.lifecycle.Observer;
- import android.arch.lifecycle.ViewModel;
- import android.arch.lifecycle.ViewModelProviders;
- import android.content.Context;
- import android.content.Intent;
- import android.graphics.Rect;
- import android.support.annotation.Nullable;
- import android.support.design.widget.TabLayout;
- import android.support.design.widget.FloatingActionButton;
- import android.support.v4.app.FragmentActivity;
- import android.support.v4.app.FragmentStatePagerAdapter;
- import android.support.v7.app.AppCompatActivity;
- import android.support.v7.widget.Toolbar;
- import android.support.v4.app.Fragment;
- import android.support.v4.app.FragmentManager;
- import android.support.v4.app.FragmentPagerAdapter;
- import android.support.v4.view.ViewPager;
- import android.os.Bundle;
- import android.util.Log;
- import android.view.LayoutInflater;
- import android.view.MenuItem;
- import android.view.View;
- import android.view.ViewGroup;
- import android.widget.AdapterView;
- import android.widget.ArrayAdapter;
- import android.widget.Spinner;
- import android.widget.Toast;
- import java.util.ArrayList;
- import java.util.List;
- // This class is the class for the menu activity.
- // I hate this class. Passionately.
- public class MenuActivity extends AppCompatActivity implements PlaceholderFragment.MenuTitles {
- private static final String TAG = "SplitBill";
- private Toolbar toolbar;
- private String resName;
- public static int ResID;
- // ↑ This here int is static because it needs to
- // be accessed from the fragment, something I
- // struggled to figure out for a good week. It's
- // one of the reasons why I hate this class so much.
- public static int mNumberMenus;
- private SectionsPagerAdapter mSectionsPagerAdapter;
- private TabLayout mTabLayout;
- private ViewPager mViewPager;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_menu);
- mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
- mTabLayout = findViewById(R.id.tabs);
- mViewPager = findViewById(R.id.container);
- Toolbar toolbar = findViewById(R.id.toolbar);
- setSupportActionBar(toolbar);
- getSupportActionBar().setDisplayHomeAsUpEnabled(true);
- mViewPager.setAdapter(mSectionsPagerAdapter);
- mViewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(mTabLayout));
- mTabLayout.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(mViewPager));
- setResName();
- initActivity();
- FloatingActionButton fab = findViewById(R.id.fab);
- fab.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- FragmentManager fm = getSupportFragmentManager();
- YallDoneDialog alertDialog = YallDoneDialog.newInstance("Y'all done?");
- alertDialog.show(fm, "fragment_alert");
- }
- });
- SubMenuViewModel vm = ViewModelProviders.of(this, new SubMenuViewModelFactory(getApplication(), MenuActivity.ResID)).get(SubMenuViewModel.class);
- vm.getmNumberMenus().observe(this, new Observer<String>() {
- @Override
- public void onChanged(@Nullable String s) {
- mNumberMenus = Integer.parseInt(s);
- mSectionsPagerAdapter.notifyDataSetChanged();
- }
- });
- }
- // Remember that static ResID int I declared a method back?
- // This method is responsible for setting it without crashing
- // everything from a NullPointerException. It's also responsible
- // for setting the restaurant name on the activity toolbar.
- public void initActivity(){
- toolbar = findViewById(R.id.toolbar);
- resName = getIntent().getExtras().getString("Name");
- ResID = getIntent().getExtras().getInt("ResID");
- toolbar.setTitle(resName);
- }
- public void onStringReceived(String[] strings) {
- populateTabs(strings);
- }
- public void removeAllTabs() {
- int cnp = mViewPager.getChildCount();
- while (cnp > 1) {
- mSectionsPagerAdapter.destroyItem(mViewPager, cnp - 1, mSectionsPagerAdapter.getItem(cnp - 1));
- mTabLayout.removeTabAt(cnp - 1);
- cnp--;
- }
- mSectionsPagerAdapter.notifyDataSetChanged();
- }
- public void populateTabs(String[] subMenus) {
- for (int i = 0; i < subMenus.length; i++) {
- mTabLayout.addTab(mTabLayout.newTab().setText(subMenus[i]),i);
- Log.d(TAG, "Added " + (subMenus[i]) + " to TabLayout");
- }
- mSectionsPagerAdapter.notifyDataSetChanged();
- }
- public void onBackPressed() {
- FragmentManager fm = getSupportFragmentManager();
- BackDialog alertDialog = BackDialog.newInstance("Go back?");
- alertDialog.setCancelable(false);
- alertDialog.show(fm, "fragment_alert");
- }
- public String getResName() {
- return resName;
- }
- public void setResName() {
- toolbar = findViewById(R.id.toolbar);
- Intent intent = getIntent();
- resName = intent.getStringExtra("Name");
- }
- @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);
- }
- /**
- * A {@link FragmentPagerAdapter} that returns a fragment corresponding to
- * one of the sections/tabs/pages.
- */
- public static class SectionsPagerAdapter extends FragmentStatePagerAdapter {
- public SectionsPagerAdapter(FragmentManager fm) {
- super(fm);
- }
- @Override
- public Fragment getItem(int position) {
- return PlaceholderFragment.newInstance(position + 1);
- }
- @Override
- public int getCount() {
- return MenuActivity.mNumberMenus;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement