【发布时间】:2018-07-03 15:23:24
【问题描述】:
我正在构建一个在设置活动中具有首选项的应用程序。有两组首选项,一组用于应用程序设置,另一组用于用户设置,应与远程网络服务器同步。
一个首选项表示为一个按钮,它正在运行AsyncTask 发送数据到后端:
<Button xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/save_btn"
android:layout_width="fill_parent"
android:layout_height="80dp"
android:layout_marginBottom="10dp"
android:layout_marginTop="10dp"
android:enabled="true"
android:text="Save Settings" />
我想在 AsyncTask 运行时部分禁用首选项,并重新启用它们进行编辑,当异步任务完成时,我该怎么做?
我的想法是在异步任务中获取活动上下文,这是正确的方法吗?
public class SavePreferences extends Preference {
// constructor code is skipped
@Override
protected void onBindView(View view) {
super.onBindView(view);
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
(new UpdateFilterTask(v)).execute();
}
});
}
}
和AsyncTask的构造函数:
public UpdateFilterTask(View btn) {
super();
this.button = btn;
rootView = btn.getRootView();
...
}
【问题讨论】:
-
你可以设置一个
static boolean Busy,如果不忙,OnClick 将它设置为true并禁用按钮(用于样式目的),在OnPostExcute中将忙设置为false。所以当用户再次点击时,检查 Busy 是否为真,然后返回或重复.. -
所以基本上你希望你的
save button在AsyncTask运行时被禁用? -
保存按钮与过滤器设置相关的其他首选项 - 我想限制用户在更新时修改设置。与应用设置相关的其他设置应该是可编辑的
标签: android