我的问题是,我有一个片段,其中有一个菜单,然后选择一个选项,该选项需要应用于我拥有的每个片段。
例如,在我的个人资料片段中,我需要为用户启用一个特定的团队,该团队将影响每个片段,因为如果我在个人资料片段中选择了例如美国作为团队,则需要查看信息关于我的团队的其他片段。
我的问题是,单身这样做更好吗?因此,我在个人资料中创建了所选内容的实例,然后在其他片段中访问了它。
这是一种好方法还是我需要以其他方式做到这一点?
答案 0 :(得分:1)
使用shared preferences
可以更好地解决此问题。选择United States
时,只需将其保存在共享首选项中的变量中,该变量将在整个应用程序中可用。
Button updateTeamName = findViewById(R.id.btnupdateTeamName);
updateTeamName .setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SharedPreferences.Editor editor = sharedpreferences.edit();
editor.putString("team", "United States");
editor.commit();
}
});
单击按钮updateTeamName
时,它将在共享首选项中放置一个条目,该条目在整个应用程序中都可用。
答案 1 :(得分:0)
通常,您希望保留诸如团队,姓名,年龄等用户信息。
如何持久保存数据,以后可以在任何其他业务逻辑或视图中提取并重用这些数据,这无关紧要。 (可以是例如远程或本地数据库)
我不建议将其存储到任何依赖于Android技术的生命周期中,因为当应用程序终止时,您可能会丢失数据。
尝试通过某种持久层存储数据。 糟糕,通过处理该层访问的单例对象可以实现访问该持久层的方式。
我将为您添加各种资源,以找出最适合您的需求:
https://developer.android.com/guide/topics/data/data-storage
https://developer.android.com/topic/libraries/architecture/room
https://github.com/futurice/android-best-practices#data-storage
https://github.com/codepath/android_guides/wiki#persistence
还要检查android体系结构,在这里您可以了解它们如何处理不同片段和视图上的数据:
https://github.com/googlesamples/android-architecture
答案 2 :(得分:0)
您需要创建一个类并用于存储静态变量。
例如
public class S{
public static int sSocketTimeOutInMS = 50000;
}
现在您可以使用 S 在活动和片段中的任何地方获取此变量。 例如
int SocketTimeOut = S.sSocketTimeOutInMS;
答案 3 :(得分:0)
对于当今的应用程序,我所知道的最好方法是使用Google Architecture Components中的ViewModel。您可以共享所有片段的ViewModel,并像以前有人告诉您的那样使用LiveData观察每个片段的变化。