将WebView从第一个活动传递到第二个活动时遇到了一些问题。我已经尝试了putExtra
等等,但它抱怨我正在尝试传递WebView而不是String。
Intent intent = new Intent().setClass(this, WebView.class);
intent.putExtra("myPassedWebView", mWebView);
startActivity(intent);
有什么想法吗?
提前致谢!
答案 0 :(得分:4)
永远不要在活动之间传递小部件。您将创建内存泄漏。如果您要解决的任何问题,请找到另一种解决方案。
答案 1 :(得分:1)
很老的话题,但我遇到了同样的问题。
不确定这是否是正确的方法。但是我通过创建一个单例类来解决这个问题,我存储了我使用的webview。
当我启动我需要相同webview的新活动时,我将其从parentLayout中删除,然后在onCreate();
因为没有使用putExtra方法而且你只有一个webview实例,所以不会有内存泄漏。
创建webview并将其存储在singletonclass中:
Singleton.getInstance().setWebView((WebView) findViewById(R.id.mainwebview));
在开始活动之前从parentLayout中删除webview:
((ViewGroup)Singleton.getInstance().getWebView().getParent()).removeView(Singleton.getInstance().getWebView());
Intent i = new Intent(getApplication().getBaseContext(), WebActivity.class);
startActivity(i);
在新活动onCreate()中添加新视图中的webview:
((LinearLayout)findViewById(R.id.webActivity)).addView(Singleton.getInstance().getWebView());
然后,您可以按照自己的方式在活动之间传递webview。