Advertisement
Guest User

Untitled

a guest
Sep 4th, 2018
271
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.50 KB | None | 0 0
  1. package com.whatamidoingwithmylife.splitbill;
  2.  
  3. import android.app.Activity;
  4. import android.app.Application;
  5. import android.arch.lifecycle.LifecycleOwner;
  6. import android.arch.lifecycle.Observer;
  7. import android.arch.lifecycle.ViewModel;
  8. import android.arch.lifecycle.ViewModelProviders;
  9. import android.content.Context;
  10. import android.content.Intent;
  11. import android.graphics.Rect;
  12. import android.support.annotation.Nullable;
  13. import android.support.design.widget.TabLayout;
  14. import android.support.design.widget.FloatingActionButton;
  15. import android.support.v4.app.FragmentActivity;
  16. import android.support.v4.app.FragmentStatePagerAdapter;
  17. import android.support.v7.app.AppCompatActivity;
  18. import android.support.v7.widget.Toolbar;
  19.  
  20. import android.support.v4.app.Fragment;
  21. import android.support.v4.app.FragmentManager;
  22. import android.support.v4.app.FragmentPagerAdapter;
  23. import android.support.v4.view.ViewPager;
  24. import android.os.Bundle;
  25. import android.util.Log;
  26. import android.view.LayoutInflater;
  27. import android.view.MenuItem;
  28. import android.view.View;
  29. import android.view.ViewGroup;
  30.  
  31. import android.widget.AdapterView;
  32. import android.widget.ArrayAdapter;
  33. import android.widget.Spinner;
  34. import android.widget.Toast;
  35.  
  36. import java.util.ArrayList;
  37. import java.util.List;
  38.  
  39. // This class is the class for the menu activity.
  40. // I hate this class. Passionately.
  41.  
  42. public class MenuActivity extends AppCompatActivity implements PlaceholderFragment.MenuTitles {
  43.     private static final String TAG = "SplitBill";
  44.  
  45.     private Toolbar toolbar;
  46.     private String resName;
  47.     public static int ResID;
  48.     // ↑ This here int is static because it needs to
  49.     // be accessed from the fragment, something I
  50.     // struggled to figure out for a good week. It's
  51.     // one of the reasons why I hate this class so much.
  52.     public static int mNumberMenus;
  53.  
  54.     private SectionsPagerAdapter mSectionsPagerAdapter;
  55.     private TabLayout mTabLayout;
  56.     private ViewPager mViewPager;
  57.  
  58.     @Override
  59.     protected void onCreate(Bundle savedInstanceState) {
  60.         super.onCreate(savedInstanceState);
  61.         setContentView(R.layout.activity_menu);
  62.  
  63.         mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
  64.         mTabLayout = findViewById(R.id.tabs);
  65.         mViewPager = findViewById(R.id.container);
  66.  
  67.         Toolbar toolbar = findViewById(R.id.toolbar);
  68.         setSupportActionBar(toolbar);
  69.         getSupportActionBar().setDisplayHomeAsUpEnabled(true);
  70.  
  71.  
  72.         mViewPager.setAdapter(mSectionsPagerAdapter);
  73.  
  74.         mViewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(mTabLayout));
  75.         mTabLayout.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(mViewPager));
  76.  
  77.         setResName();
  78.         initActivity();
  79.  
  80.         FloatingActionButton fab = findViewById(R.id.fab);
  81.         fab.setOnClickListener(new View.OnClickListener() {
  82.             @Override
  83.             public void onClick(View view) {
  84.                 FragmentManager fm = getSupportFragmentManager();
  85.                 YallDoneDialog alertDialog = YallDoneDialog.newInstance("Y'all done?");
  86.                 alertDialog.show(fm, "fragment_alert");
  87.             }
  88.         });
  89.  
  90.  
  91.         SubMenuViewModel vm = ViewModelProviders.of(this, new SubMenuViewModelFactory(getApplication(), MenuActivity.ResID)).get(SubMenuViewModel.class);
  92.         vm.getmNumberMenus().observe(this, new Observer<String>() {
  93.             @Override
  94.             public void onChanged(@Nullable String s) {
  95.                 mNumberMenus = Integer.parseInt(s);
  96.                 mSectionsPagerAdapter.notifyDataSetChanged();
  97.             }
  98.         });
  99.     }
  100.  
  101.     // Remember that static ResID int I declared a method back?
  102.     // This method is responsible for setting it without crashing
  103.     // everything from a NullPointerException. It's also responsible
  104.     // for setting the restaurant name on the activity toolbar.
  105.  
  106.     public void initActivity(){
  107.         toolbar = findViewById(R.id.toolbar);
  108.  
  109.         resName = getIntent().getExtras().getString("Name");
  110.         ResID = getIntent().getExtras().getInt("ResID");
  111.  
  112.         toolbar.setTitle(resName);
  113.     }
  114.  
  115.     public void onStringReceived(String[] strings) {
  116.         populateTabs(strings);
  117.     }
  118.  
  119.     public void removeAllTabs() {
  120.         int cnp = mViewPager.getChildCount();
  121.         while (cnp > 1) {
  122.             mSectionsPagerAdapter.destroyItem(mViewPager, cnp - 1, mSectionsPagerAdapter.getItem(cnp - 1));
  123.             mTabLayout.removeTabAt(cnp - 1);
  124.             cnp--;
  125.         }
  126.         mSectionsPagerAdapter.notifyDataSetChanged();
  127.     }
  128.  
  129.     public void populateTabs(String[] subMenus) {
  130.         for (int i = 0; i < subMenus.length; i++) {
  131.             mTabLayout.addTab(mTabLayout.newTab().setText(subMenus[i]),i);
  132.             Log.d(TAG, "Added " + (subMenus[i]) + " to TabLayout");
  133.         }
  134.  
  135.         mSectionsPagerAdapter.notifyDataSetChanged();
  136.     }
  137.  
  138.     public void onBackPressed() {
  139.         FragmentManager fm = getSupportFragmentManager();
  140.         BackDialog alertDialog = BackDialog.newInstance("Go back?");
  141.         alertDialog.setCancelable(false);
  142.         alertDialog.show(fm, "fragment_alert");
  143.     }
  144.  
  145.     public String getResName() {
  146.         return resName;
  147.     }
  148.  
  149.     public void setResName() {
  150.         toolbar = findViewById(R.id.toolbar);
  151.  
  152.         Intent intent = getIntent();
  153.         resName = intent.getStringExtra("Name");
  154.     }
  155.  
  156.  
  157.     @Override
  158.     public boolean onOptionsItemSelected(MenuItem item) {
  159.         // Handle action bar item clicks here. The action bar will
  160.         // automatically handle clicks on the Home/Up button, so long
  161.         // as you specify a parent activity in AndroidManifest.xml.
  162.         int id = item.getItemId();
  163.  
  164.         //noinspection SimplifiableIfStatement
  165.         if (id == R.id.action_settings) {
  166.             return true;
  167.         }
  168.  
  169.         return super.onOptionsItemSelected(item);
  170.     }
  171.  
  172.     /**
  173.      * A {@link FragmentPagerAdapter} that returns a fragment corresponding to
  174.      * one of the sections/tabs/pages.
  175.      */
  176.     public static class SectionsPagerAdapter extends FragmentStatePagerAdapter {
  177.  
  178.         public SectionsPagerAdapter(FragmentManager fm) {
  179.             super(fm);
  180.         }
  181.  
  182.         @Override
  183.         public Fragment getItem(int position) {
  184.             return PlaceholderFragment.newInstance(position + 1);
  185.         }
  186.  
  187.         @Override
  188.         public int getCount() {
  189.             return MenuActivity.mNumberMenus;
  190.         }
  191.     }
  192. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement