android - 将 Android View 附加到布局/从布局中分离

标签 android android-layout android-webview

我想在 Application 类派生的 onCreate() 方法中创建一个 WebView,然后在调用 Activity onCreate() 时将其附加到主布局,并在调用 onDestroyed() 时将其分离。因此,每次创建/销毁 Activity 时,WebView 组件都是相同的(有点像单例)。问题是我(以我的 Windows API 背景)不知道如何做到这一点。只是 new WebView()/addiew()/removeView()?

你问我为什么要这样做? Prevent Android activity from being recreated on turning screen off简而言之,WebView 永远不应该被销毁。

最佳答案

没什么特别的。在 list 中将 MyApp 注册为应用程序类名。

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 中删除 View 。

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 - 将 Android View 附加到布局/从布局中分离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10505346/

相关文章:

Android Studio 在布局预览中显示错误的布局(ActionBarOverlayLayout?!)

android - 单 Spinner 多项 Activity

java - 在Recyclerview项目Mainactivity中创建url对象,Adapter在默认浏览器中解析加载Url。尝试在 WebView 中?

java - android webviewclient 在 UI 线程问题上运行

Javascript:android Webview 中的 window.saveAs

android ImageButton 获取灰色背景

android - Paypal沙盒环境下如何关联API凭据和APP Id

android - 未知资源 0 : Robolectric fails with ShareActionProvider when I upgrade to AppCompat

java - OpenCV android函数使用

android - 我可以在 Android XML 布局中创建可重用组件吗?