2010-09-18 100 views
0

将WebView从第一项活动传递给第二项活动时出现了一些问题。我试过putExtra等等,但它抱怨说我想传递一个WebView而不是String。将WebView从一项活动传递到另一项

Intent intent = new Intent().setClass(this, WebView.class); 
intent.putExtra("myPassedWebView", mWebView); 
startActivity(intent); 

任何想法?

在此先感谢!

回答

4

切勿在活动之间传递小部件。您将创建内存泄漏。请为您尝试解决的任何问题找到另一种解决方案。

+0

那么,问题本身就是我的WebView在TabLayout中,我想从TabLayout中释放我的WebView。否则,即使我的WebView打开,我的选项卡也会位于顶部。所以我试图用这种方式来解决它。 – Curtain 2010-09-18 15:48:07

+0

@Julian Assange:然后摆脱标签。您需要设计您的用户界面,使得“WebView”驻留在单个活动中。 – CommonsWare 2010-09-18 16:03:29

+0

那么,应用程序的其余部分需要这些选项卡,并且WebView会从我的TabLayout的一个较早的视图中显示。 – Curtain 2010-09-18 16:09:11

1

很老的话题,但我有同样的问题。

不确定这是否是正确的方法。但我通过创建一个存储我使用的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

相关问题