gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 22:07:20 24 4
gpt4 key购买 nike

我想在 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com