我有两项活动,Home.java
和Profile.java
。
当用户在Home.java中点击ListView中的某人的个人资料时,我会获得该用户的用户名,将其存储在静态变量Home.usernameProfile
中并转到Profile.java,我在其中使用点击的用户名加载数据静态变量Home.usernameProfile
。
从个人资料中,您可以转到另一个个人资料(开始新的Profile.java
活动),然后为新个人资料设置Home.usernameProfile
。
问题是,如果我从第二个配置文件返回Home.usernameProfile
变量中的第一个配置文件,我仍然会有第二个配置文件的用户名,我需要拥有第一个配置文件的用户名,因为我在配置文件中执行操作这需要Home.usernameProfile
变量。
我尝试在Profile.java中创建TextView,在TextView中存储Home.usernameProfile
变量值,并在使用Home.usernameProfile
重新启动活动时将其返回到public void onRestart() { super.onRestart(); ...}
,但TextView会返回其他值。
有谁知道从其他个人资料返回时如何获取当前显示的个人资料的用户名?
答案 0 :(得分:2)
您在错误的地方使用静态变量,不要这样做。静态变量是类级变量,它用于始终为该类提供单个(公共)值。
在此处阅读静态关键字: - Official Doc
更改静态变量值将反映所有位置的变量值。 (想想静态,因为它只有一个值,这个值将是最后赋值。更改值将覆盖其旧值)
问题: -
当您启动Profile.java并在Home.usernameProfile中设置值时,此处发生了什么,但如果您选择其他配置文件,它将再次使用新值覆盖Home.usernameProfile值。由于此字段在您的方案中是静态的,因此您将在所有位置拥有此新值,因为您有意更改了该值。 (这就是静态的工作方式。)
对于解决方案: -
从Home.java发送到Profile.java时使用intent传递数据。 Pass data from one activity to other.并从Home.java中删除您现在不需要的静态字段。
现在,在Profile.java文件中,您可以轻松获取传递的数据并使用它。
希望这有帮助,
感谢。