gpt4 book ai didi

java - 从另一个 Activity 引用一个 Activity 的属性

转载 作者:行者123 更新时间:2023-12-01 10:57:11 27 4
gpt4 key购买 nike

我有一个类MainActivity(扩展AppCompatActivity)。在这个类中创建了一个NavDrawerFragment(扩展Fragment)mNavigationDrawerFragment。

然后是一个 WpFragment,它在选择 mNavigationDrawerFragment 的选项之一时启动。此 WpFragment 启动 AsyncTask WpGetTask。在单击事件时, fragment 启动 WpDetailActivity。在特殊情况下,WpGetTask 启动 WpDetailActivity。

如果我现在在 WpDetailActivity 中选择主页符号,则主 Activity 的 mNavigationDrawerFragment().openDrawer() 应该会发生。我尝试使用静态类并将 mNavigationDrawerFragment 保存在那里,这对我有用,但是当从 WpDetailActivity 引用静态类的 mNavigationDrawerFragment 时,另一个用户收到 NullPointerException。

从WpDetailActivity调用MainActivity的mNavigationDrawerFragment有哪些不同的方式?

最佳答案

您不应假设 Fragment 中的数据或Activity会持续比可见的时间更长——它们的设计初衷并不是为了持续存在。一个Fragment可以访问Activity它附加到的变量,但仅在其生命周期内且仅当它附加到 Activity 时.

如果您希望跨 Activity 访问数据那么您应该将数据传递到 Intent 中或者使用数据存储(如 SharedPreferences )。

您还有其他选择,但这里的问题本质上是一旦Activity对于用户不可见,Android 可能会销毁它并在需要时重新创建它。这就是当您尝试访问 Activity 中的静态(或非静态)类/方法/变量时有时会得到 NPE 的原因。 .

编辑:

阅读 Activity 的“流程生命周期”:

http://developer.android.com/reference/android/app/Activity.html#ProcessLifecycle

“#3”明确指出 Android 可以“安全地终止其进程”。这不是一个要求,而是一种可能性。这意味着,对于稳定的应用程序,您应该假设它确实发生并进行相应的计划。

关于java - 从另一个 Activity 引用一个 Activity 的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33574071/

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