安装/从布局Android的分离视图/ [英] Attach/detach Android view to/from layout

查看:79
本文介绍了安装/从布局Android的分离视图/的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想创建的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被重新翻上屏幕关闭在几个单词的Andr​​oid活动,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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆