我想在不同的 Activity 中重用同一个 View 对象(不是 View 类,也不是 xml 文件,我指的是内存中的对象)。
我差一点就完成了。当然,重要的是上下文。
我尝试使用应用程序上下文。它几乎可以工作,但是当我点击我在不同 Activity 之间传输的 View ,并尝试从它(或链接)启动另一个应用程序时,它崩溃了。 (我不记得确切的崩溃,但如果你需要的话,我会挖掘它)。
我尝试了一些 Activity ,我不介意泄漏一次,并将其作为上下文提供。它有效,实际上一切正常,直到我开始在 ViewFlipper 中出现奇怪的异常。
我的问题是,这种复用真的可行吗?如何做到稳定?你有这方面的经验吗?
非常感谢, 丹
最佳答案
我谨记,您可以承担泄露 1 个 Activity 的后果,因为这是我所知道的唯一解决方案: 声明一个静态 View ,例如在您的第一个 Activity (您正在请求广告)中使用 myAdView。现在您可以在每个 Activity 转换中添加和删除此 myAdView。当然,您必须在单独的 Activity 中为您的广告维护单独的 LinearLayouts,我们将在其中添加/删除 myAdView 例如。假设您要从 Activity A 转到 B,然后在 A 的 onPause 中删除 myAdView:
private LinearLayout layoutAd;
layoutAd = (LinearLayout) findViewById(R.id.layout_ad); // from A's xml
protected void onPause() {
super.onPause();
layoutAd.removeView(FirstActivity.adBannerView);
}
并在 B 的 onResume 中添加相同的(FirstActivity 的)myAdView:
private LinearLayout layoutAd;
layoutAd = (LinearLayout) findViewById(R.id.layout_ad); // from B's xml
protected void onResume() {
super.onResume();
layoutAd.addView(FirstActivity.adBannerView);
}
希望这能在一定程度上解决您的问题。
关于Android:在不同的 Activity 中重复使用相同的 View 对象(案例是关于广告横幅),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8790426/