从每个列表视图项打开不同的首选项活动

时间:2016-04-07 14:00:18

标签: android android-intent

我有一个onItemCLick并列出了项目。我有一个Activity设置,当用户点击第一个列表项时,它会打开一个PreferenceActivity的新Intent p = new Intent(this, Settings.class); startActivity(p);

PreferenceActivity

当我点击第二个列表项时,它也会打开与第一个列表项中相同的Activity。因此,如果我对第一个列表项的首选项进行任何更改,我会在单击第二个列表项时看到这些更改。我知道它基本上每次打开相同的putExtra()。有人可以帮助您如何为每个列表项单击打开不同的首选项活动。

我认为在打开Intent之前我应该​​在PreferenceActivity中使用PreferenceActivity。但我不知道该放什么以及如何在ERROR_STRING_FOR_RANDOM = "Usage of built-in random generators is not allowed" methods_to_block = ["rand", "srand", "Random::rand", "Random::srand", "Random::seed", "Random::new", "Kernel::rand", "Kernel::srand", "Array::shuffle", "Array::shuffle!", "Array::sample"] methods_to_block.each do |method| eval """ def #{method} raise ERROR_STRING_FOR_RANDOM end """ end 中使用它。有人可以请帮助。这甚至是正确的方法吗?

1 个答案:

答案 0 :(得分:0)

将警报的标识符发送到PreferenceFragment,在onCreate()中检索,并从那里动态创建您的偏好设置。

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

    Bundle bundle = getIntent().getExtras();
    int alarmId = bundle.getString("alarmId");

    PreferenceScreen screen = getPreferenceManager().createPreferenceScreen(getActivity()); 
    setPreferenceScreen(screen);

    PreferenceCategory category = new PreferenceCategory(screen.getContext());
    category.setTitle("Preferences for alarm " + alarmId);
    screen.addPreference(category);

    //For example create a checkbox preference
    CheckBoxPreference checkBoxPref = new CheckBoxPreference(screen.getContext());
    checkBoxPref.setKey("checkbox_alarm_" + alarmId);
    checkBoxPref.setTitle("Checkbox for alarm " + alarmId);

    category.addPreference(checkBoxPref);
}

只是提醒您,如果删除特定警报,您可能还想删除警报的所有共享首选项。