将WebView从一项活动传递到另一项
问题描述:
将WebView从第一项活动传递给第二项活动时出现了一些问题。我试过putExtra
等等,但它抱怨说我想传递一个WebView而不是String。将WebView从一项活动传递到另一项
Intent intent = new Intent().setClass(this, WebView.class);
intent.putExtra("myPassedWebView", mWebView);
startActivity(intent);
任何想法?
在此先感谢!
答
切勿在活动之间传递小部件。您将创建内存泄漏。请为您尝试解决的任何问题找到另一种解决方案。
答
很老的话题,但我有同样的问题。
不确定这是否是正确的方法。但我通过创建一个存储我使用的webview的单例类来解决问题。
当我推出新的活动,我需要同样的WebView我从parentLayout删除它,然后在新的activityLayout中再次添加onCreate();
不会有memoryleaks由于没有使用putExtra方法和你将只有一个webview实例。
创建的WebView并将其存储在singletonclass:
Singleton.getInstance().setWebView((WebView) findViewById(R.id.mainwebview));
取下parentLayout web视图开始活动之前:
((ViewGroup)Singleton.getInstance().getWebView().getParent()).removeView(Singleton.getInstance().getWebView());
Intent i = new Intent(getApplication().getBaseContext(), WebActivity.class);
startActivity(i);
在新的活动的onCreate()在新的布局增加网页流量:
((LinearLayout)findViewById(R.id.webActivity)).addView(Singleton.getInstance().getWebView());
然后你可以在你的活动之间通过webview的方式 你要。
+1
我们可以在onBackPressed被调用后处理情况。它会抛出NullPointerException – 2015-11-26 06:44:55
那么,问题本身就是我的WebView在TabLayout中,我想从TabLayout中释放我的WebView。否则,即使我的WebView打开,我的选项卡也会位于顶部。所以我试图用这种方式来解决它。 – Curtain 2010-09-18 15:48:07
@Julian Assange:然后摆脱标签。您需要设计您的用户界面,使得“WebView”驻留在单个活动中。 – CommonsWare 2010-09-18 16:03:29
那么,应用程序的其余部分需要这些选项卡,并且WebView会从我的TabLayout的一个较早的视图中显示。 – Curtain 2010-09-18 16:09:11