gpt4 book ai didi

java - 在 Android 中添加动态复选框首选项,并在首选项屏幕中显示它们?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:07:32 24 4
gpt4 key购买 nike

我想实现用户能够使用复选框共享首选项选择要显示的项目组的功能。准确地说,我将从首选项中读取选中的项目并显示。

这是我的偏好类

 public class Preferences extends PreferenceActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

//One way to add default preferences
//addPreferencesFromResource(R.xml.prefs);

//For now I prefer this
setPreferenceScreen(defaultPref());

}

// The first time application is launched this should be read
private PreferenceScreen defaultPref() {
PreferenceScreen root = getPreferenceManager().createPreferenceScreen(this);

CheckBoxPreference checkboxPref = new CheckBoxPreference(this);
checkboxPref.setKey("1");
checkboxPref.setTitle("SomeRandomStuff");
root.addPreference(checkboxPref);

return root;
}
public showAllPreferences () {
// TO SHOW ALL THE PREFERENCES BUT NOT SURE HOW TO DISPLAY THEM
}
}

现在我不明白如何动态添加更多首选项并将它们显示在首选项屏幕中。

这是主要的 Activity 类

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try {
setContentView(R.layout.main);
}catch (Exception e) {
e.printStackTrace();
}

exView = (ExpandableListView) findViewById(R.id.expandableListView1);

// STUFF TO ADD IN PREFERENCES
editText = (EditText) findViewById(R.id.editText1);
//BUTTON TO ADD PREFERENCES.(SEARCH TERM IS IDENTIFIED AND ADDED TO PREF)
addButton = (ImageButton) findViewById(R.id.imageButton1);
// BUTTON TO DISPLAY PREFERENCES
prefButton = (ImageButton) findViewById(R.id.imageButtonPref);

SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
final SharedPreferences.Editor editor = settings.edit();

addButton.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub

PrefObject obj = new PrefObject();
String key = Integer.toString(i);
String title = editText.getText().toString();
//prefArray.add(obj);
editor.putString(key, title);
editor.commit();
i++

}
});
prefButton.setOnClickListener(new OnClickListener() {
// This method should show the preferences activity with new data
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(Main.this, Preferences.class);
startActivity(intent);
// I know how to call the intent but I am not sure if
// how to read the saved contents and display it
Preferences pref = new Preferences();
pref.showAllPreferences();





}
});

最佳答案

据我所知,首选项没有“可见性”选项,当您认为它只是一个 ListView 时,这有点有意义。

参见 [ 1 ].对于我所看到的,你可以做这样的事情:

PreferenceScreen screen = this.getPreferenceScreen();
// Use "1" since you're using "1" to create it.
CheckBoxPreference ckbox = (CheckBoxPreference) this.findPreference("1");
screen.removePreference(ckbox);

要重新创建,您可以这样做 [ 2 ]:

screen.addPreference(ckbox);

此外,请记住使用 setOrder(int order) 创建您的首选项,以便在您重新创建时,它会在正确的位置重新创建。

如您所见,保留对首选项的全局引用以使其更容易和更快是值得的。

当然,我不需要告诉您应该将该逻辑集成到您的 CheckboxPreference 监听器中。参见 this answer除了 Reto Meier 本人,没有其他人看到一个好的方法(它也是一个复选框)。他在整个屏幕上注册了一个监听器,并检查哪个首选项触发了监听器,但您可以通过设置其 setOnPreferenceChangeListener 来更简单(但稍后会更详细)。

*编辑:我看到您还使用了一个按钮来添加首选项。您还可以在按钮本身中实现上述相同的逻辑。这完全取决于您是想使用复选框还是按钮来执行此操作。

最后,仅设置启用状态可能是值得的,除非您正在执行诸如“查看高级首选项”之类的操作或值得让新手用户远离对您的应用进行危险操作的操作。但恕我直言,通常启用状态更适合用户体验。

我希望这能回答您的问题。

关于java - 在 Android 中添加动态复选框首选项,并在首选项屏幕中显示它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8287067/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com