Java tutorial
package com.ckchan.assignment1.ckchan_todolist; import java.util.ArrayList; import org.json.JSONException; import com.ckchan.assignment1.adapter.TabsPagerAdapter; import com.ckchan.assignment1.ckchan_notes.R; import android.support.v4.app.FragmentActivity; import android.support.v4.view.ViewPager; import android.app.ActionBar; import android.app.ActionBar.Tab; import android.app.FragmentTransaction; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.widget.Toast; /*Copyright 2014 Carly Chan Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.*/ public class MainActivity extends FragmentActivity implements ActionBar.TabListener { private ViewPager viewPager; private TabsPagerAdapter tabsPagerAdapter; private ActionBar actionBar; //Tab titles //In string array in case more tabs need to be added private String[] tabs = { "TODO", "Archive" }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //Initialization of viewPager viewPager = (ViewPager) findViewById(R.id.pager); actionBar = getActionBar(); tabsPagerAdapter = new TabsPagerAdapter(getSupportFragmentManager()); viewPager.setAdapter(tabsPagerAdapter); actionBar.setHomeButtonEnabled(false); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); //Adding Tabs for (String tab_name : tabs) { actionBar.addTab(actionBar.newTab().setText(tab_name).setTabListener(this)); } viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageSelected(int position) { //Execute code in onArticleSelected when tab is selected switch (position) { case 0: //This code was from: //http://stackoverflow.com/questions/20412379/viewpager-update-fragment-on-swipe 2014-09-23 TodoFragment todoFragment = (TodoFragment) tabsPagerAdapter.instantiateItem(viewPager, position); if (todoFragment != null) { todoFragment.onArticleSelected(); } break; case 1: ArchiveFragment archiveFragment = (ArchiveFragment) tabsPagerAdapter.instantiateItem(viewPager, position); if (archiveFragment != null) { archiveFragment.onArticleSelected(); } break; } actionBar.setSelectedNavigationItem(position); //Switch to selected tab } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { } @Override public void onPageScrollStateChanged(int arg0) { } }); } @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 //Selecting action bar items 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(); if (id == R.id.action_settings) { Settings(); return true; } //Handle presses on the action bar items switch (item.getItemId()) { case R.id.summary_info: SummaryInfo(); return true; case R.id.email_all: try { Context context = getApplicationContext(); TaskDatabase taskDatabase = new TaskDatabase(); ; Email email = taskDatabase.loadEmailAddress(context); ArrayList<TodoTask> taskArray = (ArrayList<TodoTask>) taskDatabase.loadTaskData(context); ArrayList<TodoTask> archiveArray = (ArrayList<TodoTask>) taskDatabase.loadArchiveData(context); //StringBuilder code from: //http://stackoverflow.com/questions/12899953/in-java-how-to-append-a-string-more-efficiently StringBuilder stringBuilder = new StringBuilder(); if (email != null) { Intent i = new Intent(Intent.ACTION_SEND); i.setType("message/rfc822"); i.putExtra(Intent.EXTRA_EMAIL, new String[] { email.getAddress() }); i.putExtra(Intent.EXTRA_SUBJECT, "Todo and Archive Tasks"); stringBuilder.append("Todo Tasks\n"); for (TodoTask task : taskArray) { stringBuilder.append(task.getTaskDescription() + "\n"); } stringBuilder.append("Archive Tasks\n"); for (TodoTask task : archiveArray) { stringBuilder.append(task.getTaskDescription() + "\n"); } String emailContent = stringBuilder.toString(); i.putExtra(Intent.EXTRA_TEXT, emailContent); try { startActivity(Intent.createChooser(i, "Send mail...")); } catch (android.content.ActivityNotFoundException ex) { Toast.makeText(context, "There are no email clients installed.", Toast.LENGTH_SHORT).show(); } } } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } default: return super.onOptionsItemSelected(item); } } @Override //When tabs are selected public void onTabReselected(Tab tab, FragmentTransaction ft) { // TODO Auto-generated method stub } @Override public void onTabSelected(Tab tab, FragmentTransaction ft) { viewPager.setCurrentItem(tab.getPosition()); } @Override public void onTabUnselected(Tab tab, FragmentTransaction ft) { // TODO Auto-generated method stub } //Starts new SummaryInfo activity private void SummaryInfo() { Intent i = new Intent(MainActivity.this, SummaryInfoActivity.class); startActivity(i); } //Starts new Settings Activity private void Settings() { Intent i = new Intent(MainActivity.this, SettingsActivity.class); startActivity(i); } }