Java tutorial
/* * Copyright () 2011-2013, 2015 Jeff Harris <jefftharris@gmail.com> * All rights reserved. Use of the code is allowed under the * Artistic License 2.0 terms, as specified in the LICENSE file * distributed with this code, or available from * http://www.opensource.org/licenses/artistic-license-2.0.php */ package com.jefftharris.passwdsafe; import android.annotation.TargetApi; import android.content.Intent; import android.content.SharedPreferences; import android.net.Uri; import android.os.Build; import android.os.Bundle; import android.preference.PreferenceManager; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; import android.view.KeyEvent; import com.jefftharris.passwdsafe.lib.ApiCompat; import com.jefftharris.passwdsafe.lib.PasswdSafeUtil; import com.jefftharris.passwdsafe.lib.view.GuiUtils; public abstract class AbstractFileListActivity extends FragmentActivity implements FileListFragment.Listener, StorageFileListFragment.Listener, SyncProviderFragment.Listener, SyncProviderFilesFragment.Listener { public static final String INTENT_EXTRA_CLOSE_ON_OPEN = "closeOnOpen"; private static final String TAG = "AbstractFileListActivity"; protected boolean itsIsCloseOnOpen = false; private Boolean itsIsStorageFrag = null; /* (non-Javadoc) * @see android.support.v4.app.FragmentActivity#onCreate(android.os.Bundle) */ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_file_list); Intent intent = getIntent(); itsIsCloseOnOpen = intent.getBooleanExtra(INTENT_EXTRA_CLOSE_ON_OPEN, false); FragmentManager fragMgr = getSupportFragmentManager(); FragmentTransaction txn = fragMgr.beginTransaction(); txn.replace(R.id.sync, new SyncProviderFragment()); txn.commit(); if (savedInstanceState == null) { setFileChooseFrag(); } } /* (non-Javadoc) * @see android.support.v4.app.FragmentActivity#onResume() */ @Override protected void onResume() { super.onResume(); setFileChooseFrag(); } /* (non-Javadoc) * @see com.jefftharris.passwdsafe.SyncProviderFragment.Listener#showSyncProviderFiles(android.net.Uri) */ @Override public void showSyncProviderFiles(Uri uri) { FragmentManager fragMgr = getSupportFragmentManager(); Fragment syncFrag = fragMgr.findFragmentById(R.id.sync); SyncProviderFilesFragment syncFilesFrag = SyncProviderFilesFragment.newInstance(uri); FragmentTransaction txn = fragMgr.beginTransaction(); txn.remove(syncFrag); txn.replace(R.id.files, syncFilesFrag); txn.addToBackStack(null); txn.commit(); } /* (non-Javadoc) * @see android.support.v4.app.FragmentActivity#onKeyDown(int, android.view.KeyEvent) */ @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (GuiUtils.isBackKeyDown(keyCode, event)) { // Take care of calling this method on earlier versions of // the platform where it doesn't exist. if (doBackPressed()) { return true; } } return super.onKeyDown(keyCode, event); } /* (non-Javadoc) * @see android.app.Activity#onBackPressed() */ @TargetApi(Build.VERSION_CODES.ECLAIR) @Override public void onBackPressed() { if (!doBackPressed()) { super.onBackPressed(); } } /** * @return true if a directory was popped, false to use default behavior */ private boolean doBackPressed() { FragmentManager mgr = getSupportFragmentManager(); Fragment frag = mgr.findFragmentById(R.id.files); return (frag instanceof FileListFragment) && frag.isVisible() && ((FileListFragment) frag).doBackPressed(); } /** Set the file chooser fragment */ private void setFileChooseFrag() { SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); boolean storageFrag = ((ApiCompat.SDK_VERSION >= ApiCompat.SDK_KITKAT) && !Preferences.getFileLegacyFileChooserPref(prefs)); if ((itsIsStorageFrag == null) || (itsIsStorageFrag != storageFrag)) { PasswdSafeUtil.dbginfo(TAG, "setFileChooseFrag storage %b", storageFrag); Fragment frag; if (storageFrag) { frag = new StorageFileListFragment(); } else { frag = new FileListFragment(); } FragmentManager fragMgr = getSupportFragmentManager(); FragmentTransaction txn = fragMgr.beginTransaction(); txn.replace(R.id.files, frag); txn.commit(); itsIsStorageFrag = storageFrag; } } }