安装/从布局Android的分离视图/ [英] Attach/detach Android view to/from layout
问题描述
我想创建的onCreate一个web视图(应用程序类的衍生物)的方法,然后将其附加到主布局时活动的onCreate()被调用并将其分离onDestroyed当()被调用。所以,每当一个活动被创建/破坏时,web视图组件将是相同的(有点单身)。问题是我(与我的Windows API的背景)没有想法如何做到这一点。只要新的WebView()/ addiew()/ removeView()?
I want to create a WebView in onCreate() method of a derivative of Application class, then attach it to the main layout when an activity onCreate() is called and detach it when onDestroyed() is called. So, every time when an activity is being created/destroyed, the WebView component will be the same (kinda singleton). The problem is I (with my Windows API background) have no ideas how to do this. Just new WebView()/addiew()/removeView()?
为什么我要做到这一点,你问? <一href="http://stackoverflow.com/questions/10498636/$p$pvent-android-activity-from-being-recreated-on-turning-screen-off">$p$pvent被重新翻上屏幕关闭在几个单词的Android活动,web视图不应该被销毁。
Why do I want to do this, you asked? Prevent Android activity from being recreated on turning screen off In several words, the WebView should never be destroyed.
推荐答案
没什么特别的。注册的MyApp如清单应用程序类的名称。
Nothing special. Register MyApp as application class name in the manifest.
public class MyApp extends Application
{
public WebView _WebView = null;
@Override
public void onCreate()
{
_WebView = new WebView(getApplicationContext());
// Settings etc.
_WebView.loadUrl("url");
super.onCreate();
}
}
删除从main.xml中的观点。
Remove the view from main.xml.
public class MyActivity extends Activity
{
WebView _WebView;
RelativeLayout _Layout; // Should be declared in main.xml.
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
_Layout = (RelativeLayout) findViewById(R.id.rl);
ViewTreeObserver vto = _Layout.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new MyLayoutListener()); // .layout(0,0,width,height);
Display display = getWindowManager().getDefaultDisplay();
MyApp app = (MyApp) this.getApplication();
_WebView = app._WebView;
_Layout.addView(_WebView, display.getWidth(), display.getHeight());
}
@Override
protected void onDestroy()
{
_Layout.removeView(_WebView);
super.onDestroy();
}
}
private class MyLayoutListener implements OnGlobalLayoutListener
{
public void onGlobalLayout()
{
Display display = getWindowManager().getDefaultDisplay();
_WebView.layout(0, 0, display.getWidth(), display.getHeight());
//_Layout.getViewTreeObserver().removeGlobalOnLayoutListener(this);
}
}
这篇关于安装/从布局Android的分离视图/的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!