如何在PreferenceFragment中添加进度条?我有一些异步任务正在运行,在完成时会在我的首选项中显示一些值。因此,当它在后台处理时,我计划只在中心显示进度条。在任务完成后,我计划显示所有首选项。
这是我目前掌握的情况。
首选片段
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.pref_account);
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
new AsyncTask<Void,Void,Void>() {
String firstName, lastName, email;
@Override
protected void doInBackground() {
// Doing something here to fetch values
}
@Override
protected void onPostExecute() {
findPreference("first_name").setSummary(firstName);
findPreference("last_name").setSummary(lastName);
findPreference("email").setSummary(email);
}
}
}
pref_account.xml
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<Preference android:key="first_name"
android:title="@string/prompt_first_name"
android:summary="" />
<Preference android:key="last_name"
android:title="@string/prompt_last_name"
android:summary="" />
<Preference android:key="email"
android:title="@string/prompt_email"
android:summary=""
android:inputType="textEmailAddress" />
<Preference android:key="sign_out"
android:title="@string/action_sign_out" />
</PreferenceScreen>
我的问题是,既然这是一个PreferenceFragment,而且我没有重写onCreateView方法,那么我应该在哪里以及如何添加进度条呢?
6条答案
按热度按时间j2datikz1#
我是这么做的:
1.创建自定义首选项类:
1.创建自定义布局(preference_loading_placeholder),同时保留首选项布局:
1.使用PreferenceCategory保存我的加载首选项:
1.将加载首选项放在需要的位置
1.加载完成后删除加载首选项:
1.加载完成后添加其他首选项:
wlsrxk512#
我有一个类似的用例,我使用了一个自定义布局的首选项。
在我拥有的首选项片段文件中(不相关的属性被省略)
然后,在自定义布局中,我放置了进度条本身
在启动异步任务之前,我调用
当任务完成时,我将可见性设置回gone。2这将允许您独立设置每个首选项,而不必等待每个首选项完成。3希望这对您有所帮助。
gijlo24d3#
我最终使用了以下方法。
在我的fragment_account. xml布局文件中。
然后在我的课上:
uxh89sit4#
您可以尝试应用以下解决方案:
在你的偏好活动中使用片段。
下面是一段代码摘录:
pcww981p5#
使用这种方法。创建一个自定义布局的对话框,其中有一个
progressBar
,只需调用show()和dismiss()。kqqjbcuj6#
在AsyncTasks缺省方法中使用以下概念