你的问题很抽象,所以我不能给你一个具体的答案。
不过,我可以提供一些指导和示例。
动态添加首选项的示例(将 EditTextPreference 替换为 CheckboxPreference)并在此之前获取文件列表:
SettingsActivity(扩展 PreferenceActivity)
private void setHomeDirectoryPreference(String home_dir)
{
final EditTextPreference etp = new EditTextPreference(this);
etp.setKey("home_directory");
etp.setTitle("Home directory");
//...
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
((PreferenceScreen) findPreference("initial_preference")).addPreference(etp);
}
列出文件子文件:
file.listFiles();
此外,您可能需要经常检查底层文件是否存在:
f.exists();
单击它后,我需要在 PreferenceScreen 中加载子目录
我个人会使用 PreferenceDialog 和 ListView 来做:
DialogPreference 示例:
public class HiddenFilesDialogPreference extends DialogPreference {
public static Context ctx;
public HiddenFilesDialogPreference(Context context, AttributeSet attrs) {
super(context, attrs);
this.ctx = context;
}
@Override
protected View onCreateDialogView() {
LayoutInflater inflater = ((Activity) ctx).getLayoutInflater();
View vw = inflater.inflate(R.layout.content_view, null);
ListView lv = (ListView) vw.findViewById(android.R.id.list);
File[] hidden_files = HiddenFileHandler.getAllHiddenFilesAsFiles();
HiddenFilesListAdapter adapter = new HiddenFilesListAdapter(ctx, hidden_files);
lv.setAdapter(adapter);
return vw;
}
@Override
protected void onDialogClosed(boolean positiveResult) {
super.onDialogClosed(positiveResult);
persistBoolean(positiveResult);
}
@Override
public void onClick (DialogInterface dialog, int which)
{
super.onClick(dialog, which);
Log.v("which", Integer.toString(which));
if(which == -1) { //Clear all
HiddenFileHandler hfh = new HiddenFileHandler(ctx);
hfh.clearHiddenFiles();
}
}
}
然后,在您的对话框中,您可以设置 onClickListeners() 来替换对话框内容等。
从具体实施开始,然后返回更具体的问题。