Java tutorial
/* * The MIT License (MIT) * Copyright (c) 2016 Gustavo Frederico Temple Pedrosa -- gustavof@motorola.com * <p> * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the * "Software"), to deal in the Software without restriction, including * without limitation the rights to use, copy, modify, merge, publish, * distribute, sublicense, and/or sell copies of the Software, and to * permit persons to whom the Software is furnished to do so, subject to * the following conditions: * <p> * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * <p> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ package com.moto.miletus.application; import android.content.Intent; import android.content.pm.ActivityInfo; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.os.Bundle; import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.app.FragmentTransaction; import android.support.v4.view.ViewPager; import android.support.v7.app.ActionBar; import android.support.v7.app.ActionBarActivity; import android.view.Menu; import android.view.MenuItem; import android.view.WindowManager; import com.moto.miletus.application.tabs.ComponentsFragment; import com.moto.miletus.application.utils.CustomExceptionHandler; import com.moto.miletus.application.utils.Strings; import com.moto.miletus.wrappers.DeviceWrapper; import com.moto.miletus.wrappers.DeviceProvider; import java.util.List; import java.util.Locale; /** * Show controls on a given {@link DeviceWrapper}. */ @SuppressWarnings("deprecation") public final class DeviceActivity extends ActionBarActivity implements ActionBar.TabListener, DeviceProvider { private ViewPager mViewPager; private DeviceWrapper mDevice; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_device); if (!(Thread.getDefaultUncaughtExceptionHandler() instanceof CustomExceptionHandler)) { Thread.setDefaultUncaughtExceptionHandler(new CustomExceptionHandler(this)); } getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED); final Bundle state = savedInstanceState != null ? savedInstanceState : getIntent().getExtras(); mDevice = state.getParcelable(Strings.EXTRA_KEY_DEVICE); if (mDevice == null) { throw new IllegalArgumentException("No Device set in intent extra " + Strings.EXTRA_KEY_DEVICE); } final ActionBar actionBar = getSupportActionBar(); if (actionBar == null) { return; } actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); actionBar.setDisplayHomeAsUpEnabled(true); actionBar.setDisplayShowHomeEnabled(true); actionBar.setTitle(R.string.app_name); //actionBar.setSubtitle(mDevice.getName()); SectionsPagerAdapter mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager()); mViewPager = (ViewPager) findViewById(R.id.container); if (mViewPager != null) { mViewPager.setAdapter(mSectionsPagerAdapter); mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() { @Override public void onPageSelected(int position) { actionBar.setSelectedNavigationItem(position); } }); } for (int i = 0; i < mSectionsPagerAdapter.getCount(); i++) { actionBar .addTab(actionBar.newTab().setText(mSectionsPagerAdapter.getPageTitle(i)).setTabListener(this)); } } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_device, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.action_refresh: List<Fragment> fragments = getSupportFragmentManager().getFragments(); for (Fragment fragment : fragments) { if (fragment instanceof ComponentsFragment) { ((ComponentsFragment) fragment).getTraits(); } } return true; case android.R.id.home: //NavUtils.navigateUpFromSameTask(this); onBackPressed(); return true; } return super.onOptionsItemSelected(item); } @Override public DeviceWrapper getDevice() { return mDevice; } @Override protected void onSaveInstanceState(Bundle outState) { outState.putParcelable(Strings.EXTRA_KEY_DEVICE, getDevice()); super.onSaveInstanceState(outState); } @Override public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) { mViewPager.setCurrentItem(tab.getPosition()); } @Override public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) { } @Override public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) { } @Override public Intent getParentActivityIntent() { Intent intent = super.getParentActivityIntent(); if (intent != null) { intent.putExtra(Strings.EXTRA_KEY_DEVICE, getDevice()); } return intent; } @Override public Intent getSupportParentActivityIntent() { Intent intent = super.getSupportParentActivityIntent(); if (intent != null) { intent.putExtra(Strings.EXTRA_KEY_DEVICE, getDevice()); } return intent; } /** * SectionsPagerAdapter */ public class SectionsPagerAdapter extends FragmentPagerAdapter { SectionsPagerAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { switch (position) { case 0: { return new ComponentsFragment(); } } return null; } @Override public int getCount() { return 1; } @Override public CharSequence getPageTitle(int position) { Locale l = Locale.getDefault(); switch (position) { case 0: return mDevice.getDevice().getName().replace(com.moto.miletus.utils.Strings.mSearchName, "") .toUpperCase(l); } return null; } } }