From 57d81fb14ded4140638b3098f90484a0b2a4e15f Mon Sep 17 00:00:00 2001 From: str4d <str4d@mail.i2p> Date: Fri, 9 Aug 2013 23:30:37 +0000 Subject: [PATCH] Migrated home buttons to use Fragment transactions --- .../android/router/fragment/MainFragment.java | 63 ++++++++++++++----- .../router/fragment/TextResourceFragment.java | 4 +- .../android/router/fragment/WebFragment.java | 11 ++-- 3 files changed, 52 insertions(+), 26 deletions(-) diff --git a/src/net/i2p/android/router/fragment/MainFragment.java b/src/net/i2p/android/router/fragment/MainFragment.java index db5477540..461573fa6 100644 --- a/src/net/i2p/android/router/fragment/MainFragment.java +++ b/src/net/i2p/android/router/fragment/MainFragment.java @@ -4,7 +4,6 @@ import android.app.AlertDialog; import android.app.Dialog; import android.content.DialogInterface; import android.content.Intent; -import android.net.Uri; import android.os.Bundle; import android.os.Handler; import android.view.LayoutInflater; @@ -69,8 +68,11 @@ public class MainFragment extends I2PFragmentBase { b.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { - Intent intent = new Intent(view.getContext(), NewsFragment.class); - startActivity(intent); + getActivity().getSupportFragmentManager() + .beginTransaction() + .replace(R.id.main_content, new NewsFragment()) + .addToBackStack(null) + .commit(); } }); @@ -78,9 +80,15 @@ public class MainFragment extends I2PFragmentBase { b.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { - Intent intent = new Intent(view.getContext(), TextResourceFragment.class); - intent.putExtra(TextResourceFragment.TEXT_RESOURCE_ID, R.raw.releasenotes_txt); - startActivity(intent); + TextResourceFragment f = new TextResourceFragment(); + Bundle args = new Bundle(); + args.putInt(TextResourceFragment.TEXT_RESOURCE_ID, R.raw.releasenotes_txt); + f.setArguments(args); + getActivity().getSupportFragmentManager() + .beginTransaction() + .replace(R.id.main_content, f) + .addToBackStack(null) + .commit(); } }); @@ -99,10 +107,16 @@ public class MainFragment extends I2PFragmentBase { b.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { - Intent intent = new Intent(view.getContext(), WebFragment.class); //intent.setData((new Uri.Builder()).scheme("http").authority("www.i2p2.de").path("/").build()); - intent.setData(Uri.parse("http://www.i2p2.de/")); - startActivity(intent); + WebFragment f = new WebFragment(); + Bundle args = new Bundle(); + args.putString(WebFragment.HTML_URI, "http://www.i2p2.de/"); + f.setArguments(args); + getActivity().getSupportFragmentManager() + .beginTransaction() + .replace(R.id.main_content, f) + .addToBackStack(null) + .commit(); } }); @@ -110,10 +124,16 @@ public class MainFragment extends I2PFragmentBase { b.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { - Intent intent = new Intent(view.getContext(), WebFragment.class); //intent.setData((new Uri.Builder()).scheme("http").authority("www.i2p2.de").path("/faq").build()); - intent.setData(Uri.parse("http://www.i2p2.de/faq")); - startActivity(intent); + WebFragment f = new WebFragment(); + Bundle args = new Bundle(); + args.putString(WebFragment.HTML_URI, "http://www.i2p2.de/faq"); + f.setArguments(args); + getActivity().getSupportFragmentManager() + .beginTransaction() + .replace(R.id.main_content, f) + .addToBackStack(null) + .commit(); } }); @@ -121,9 +141,15 @@ public class MainFragment extends I2PFragmentBase { b.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { - Intent intent = new Intent(view.getContext(), WebFragment.class); - intent.putExtra(WebFragment.HTML_RESOURCE_ID, R.raw.welcome_html); - startActivity(intent); + WebFragment f = new WebFragment(); + Bundle args = new Bundle(); + args.putInt(WebFragment.HTML_RESOURCE_ID, R.raw.welcome_html); + f.setArguments(args); + getActivity().getSupportFragmentManager() + .beginTransaction() + .replace(R.id.main_content, f) + .addToBackStack(null) + .commit(); } }); @@ -159,8 +185,11 @@ public class MainFragment extends I2PFragmentBase { b.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { - Intent intent = new Intent(view.getContext(), PeersFragment.class); - startActivity(intent); + getActivity().getSupportFragmentManager() + .beginTransaction() + .replace(R.id.main_content, new PeersFragment()) + .addToBackStack(null) + .commit(); } }); diff --git a/src/net/i2p/android/router/fragment/TextResourceFragment.java b/src/net/i2p/android/router/fragment/TextResourceFragment.java index ad0ba0092..90e1f4bfe 100644 --- a/src/net/i2p/android/router/fragment/TextResourceFragment.java +++ b/src/net/i2p/android/router/fragment/TextResourceFragment.java @@ -1,6 +1,5 @@ package net.i2p.android.router.fragment; -import android.content.Intent; import android.content.res.Resources; import android.os.Bundle; import android.text.method.ScrollingMovementMethod; @@ -30,8 +29,7 @@ public class TextResourceFragment extends I2PFragmentBase { View v = inflater.inflate(R.layout.text_resource, container, false); TextView tv = (TextView) v.findViewById(R.id.text_resource_text); tv.setMovementMethod(ScrollingMovementMethod.getInstance()); - Intent intent = getActivity().getIntent(); - int id = intent.getIntExtra(TEXT_RESOURCE_ID, R.raw.releasenotes_txt); + int id = getArguments().getInt(TEXT_RESOURCE_ID, R.raw.releasenotes_txt); if (id == R.raw.releasenotes_txt) tv.setText("Release Notes for Release " + Util.getOurVersion(getActivity()) + "\n\n" + getResourceAsString(id)); diff --git a/src/net/i2p/android/router/fragment/WebFragment.java b/src/net/i2p/android/router/fragment/WebFragment.java index bdeaddc5f..5fcfaf030 100644 --- a/src/net/i2p/android/router/fragment/WebFragment.java +++ b/src/net/i2p/android/router/fragment/WebFragment.java @@ -1,10 +1,8 @@ package net.i2p.android.router.fragment; -import android.content.Intent; import android.content.res.Resources; import android.net.Uri; import android.os.Bundle; -import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.MenuItem; import android.view.View; @@ -21,6 +19,7 @@ public class WebFragment extends I2PFragmentBase { private I2PWebViewClient _wvClient; + final static String HTML_URI = "html_url"; final static String HTML_RESOURCE_ID = "html_resource_id"; private static final String WARNING = "Warning - " + "any non-I2P links visited in this window are fetched over the regular internet and are " + @@ -39,16 +38,16 @@ public class WebFragment extends I2PFragmentBase { wv.getSettings().setBuiltInZoomControls(true); // http://stackoverflow.com/questions/2369310/webview-double-tap-zoom-not-working-on-a-motorola-droid-a855 wv.getSettings().setUseWideViewPort(true); - Intent intent = getActivity().getIntent(); - Uri uri = intent.getData(); - if (uri != null) { + String uriStr = getArguments().getString(HTML_URI); + if (uriStr != null) { + Uri uri = Uri.parse(uriStr); //wv.getSettings().setLoadsImagesAutomatically(true); //wv.loadUrl(uri.toString()); // go thru the client so .i2p will work too _wvClient.shouldOverrideUrlLoading(wv, uri.toString()); } else { wv.getSettings().setLoadsImagesAutomatically(false); - int id = intent.getIntExtra(HTML_RESOURCE_ID, 0); + int id = getArguments().getInt(HTML_RESOURCE_ID, 0); // no default, so restart should keep previous view if (id != 0) loadResource(wv, id); -- GitLab