Java tutorial
package com.bdevlin.apps.utils; import android.app.Dialog; import android.content.DialogInterface; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.os.Bundle; import android.support.v4.app.DialogFragment; 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.support.v7.app.AlertDialog; import android.text.Html; import android.text.SpannableStringBuilder; import android.text.method.LinkMovementMethod; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.webkit.WebView; import android.widget.Button; import android.widget.TextView; import com.bdevlin.apps.pandt.R; import com.bdevlin.apps.ui.activity.core.HelpActivity; /** * Created by brian on 11/11/2015. */ public class HelpUtils { public static void showDialog(HelpActivity activity) { FragmentManager fm = activity.getSupportFragmentManager(); FragmentTransaction ft = fm.beginTransaction(); Fragment prev = fm.findFragmentByTag("dialog"); if (prev != null) { ft.remove(prev); } ft.addToBackStack(null); // Create and show the dialog. AboutDialog newFragment = AboutDialog.newInstance(1); newFragment.show(ft, "dialog"); } /** * Created by brian on 11/9/2015. */ public static class AboutDialog extends DialogFragment { private static final String VERSION_UNAVAILABLE = "N/A"; int mNum; private PackageManager pm; private String packageName; private String versionName; public static AboutDialog newInstance(int num) { AboutDialog frag = new AboutDialog(); Bundle args = new Bundle(); args.putInt("num", num); frag.setArguments(args); return frag; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Get app version pm = getActivity().getPackageManager(); packageName = getActivity().getPackageName(); try { PackageInfo info = pm.getPackageInfo(packageName, 0); versionName = info.versionName; } catch (PackageManager.NameNotFoundException e) { versionName = VERSION_UNAVAILABLE; } mNum = getArguments().getInt("num"); // Pick a style based on the num. int style = DialogFragment.STYLE_NORMAL, theme = 0; switch ((mNum - 1) % 6) { case 1: style = DialogFragment.STYLE_NO_TITLE; break; case 2: style = DialogFragment.STYLE_NO_FRAME; break; case 3: style = DialogFragment.STYLE_NO_INPUT; break; case 4: style = DialogFragment.STYLE_NORMAL; break; case 5: style = DialogFragment.STYLE_NORMAL; break; case 6: style = DialogFragment.STYLE_NO_TITLE; break; case 7: style = DialogFragment.STYLE_NO_FRAME; break; case 8: style = DialogFragment.STYLE_NORMAL; break; } switch ((mNum - 1) % 6) { case 4: theme = android.R.style.Theme_Holo; break; case 5: theme = android.R.style.Theme_Holo_Light_Dialog; break; case 6: theme = android.R.style.Theme_Holo_Light; break; case 7: theme = android.R.style.Theme_Holo_Light_Panel; break; case 8: theme = android.R.style.Theme_Holo_Light; break; } setStyle(style, theme); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.about, container, false); View tv = v.findViewById(R.id.textView); getDialog().setTitle("About"); SpannableStringBuilder aboutBody = new SpannableStringBuilder(); aboutBody.append(Html.fromHtml(getString(R.string.about_body, versionName))); /*SpannableString licensesLink = new SpannableString(getString(R.string.about_licenses)); licensesLink.setSpan(new ClickableSpan() { @Override public void onClick(View view) { HelpUtils.showOpenSourceLicenses(getActivity()); } }, 0, licensesLink.length(), 0); aboutBody.append("\n\n"); aboutBody.append(licensesLink);*/ /* SpannableString eulaLink = new SpannableString(getString(R.string.about_eula)); eulaLink.setSpan(new ClickableSpan() { @Override public void onClick(View view) { HelpUtils.showEula(getActivity()); } }, 0, eulaLink.length(), 0); aboutBody.append("\n\n"); aboutBody.append(eulaLink);*/ ((TextView) tv).setText(aboutBody); ((TextView) tv).setMovementMethod(new LinkMovementMethod()); // Watch for button clicks. Button button = (Button) v.findViewById(R.id.dismiss); button.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { dismiss(); } }); return v; } } public static void showOpenSourceLicenses(FragmentActivity activity) { FragmentManager fm = activity.getSupportFragmentManager(); FragmentTransaction ft = fm.beginTransaction(); Fragment prev = fm.findFragmentByTag("dialog_licenses"); if (prev != null) { ft.remove(prev); } ft.addToBackStack(null); new OpenSourceLicensesDialog().show(ft, "dialog_licenses"); } public static class OpenSourceLicensesDialog extends DialogFragment { public OpenSourceLicensesDialog() { } @Override public Dialog onCreateDialog(Bundle savedInstanceState) { WebView webView = new WebView(getActivity()); webView.loadUrl("file:///android_asset/licenses.html", null); return new AlertDialog.Builder(getActivity()).setTitle(R.string.about_licenses).setView(webView) .setPositiveButton("ok", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { dialog.dismiss(); } }).create(); } } public static void showEula(FragmentActivity activity) { FragmentManager fm = activity.getSupportFragmentManager(); FragmentTransaction ft = fm.beginTransaction(); Fragment prev = fm.findFragmentByTag("dialog_eula"); if (prev != null) { ft.remove(prev); } ft.addToBackStack(null); new EulaDialog().show(ft, "dialog_eula"); } public static class EulaDialog extends DialogFragment { public EulaDialog() { } @Override public Dialog onCreateDialog(Bundle savedInstanceState) { int padding = getResources().getDimensionPixelSize(R.dimen.content_padding_normal); TextView eulaTextView = new TextView(getActivity()); eulaTextView.setText(Html.fromHtml(getString(R.string.eula_text))); eulaTextView.setMovementMethod(LinkMovementMethod.getInstance()); eulaTextView.setPadding(padding, padding, padding, padding); return new AlertDialog.Builder(getActivity()).setTitle(R.string.about_eula).setView(eulaTextView) .setPositiveButton("ok", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { dialog.dismiss(); } }).create(); } } }