gpt4 book ai didi

java - Android OnPreferenceClickListener

转载 作者:行者123 更新时间:2023-12-01 11:30:39 26 4
gpt4 key购买 nike

我有一个 Activity,它使用 PreferenceFragment 显示设置菜单。有一种方法可以将 Bean 列表传递给 fragment ,以便它可以动态生成一个 Preference 列表,我希望这些列表本质上就像按钮一样。我正在尝试使用 OnPreferenceClickListener 对被单击的首选项之一使用react,但我需要让最外层的 Activity 了解这一点。我的代码如下所示:

public class PairActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
fragment = new SettingsFragment();
getFragmentManager().beginTransaction()
.replace(android.R.id.content, fragment)
.commit();
...
}


public static class SettingsFragment extends PreferenceFragment {
public void displayBeans(Collection<Bean> beans) {
...
for(Bean bean : beans) {
Preference pref = new Preference(getActivity());
pref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
// want to let the Activity know something happened
}
});
}
}
}

...
}

注释显示了我想要从哪里访问 Activity,但它位于静态类内的匿名类内...我该怎么做才能解决我的问题?

最佳答案

编辑:

<罢工>让您的SettingsFragment PairActivity内部类:

<罢工>
public class PairActivity extends Activity {

public class SettingsFragment extends PreferenceFragment {

}

}

然后您可以使用 PairActivity.this 安全地引用该 Activity 。

编辑:

这是您链接的一个很好的答案,这确实是这样使用它的正确方法。我没想过。

尽管如此,当 fragment 附加到 Activity 时,您可以使用 getActivity 引用它。如果您从 clickListener 内部调用此方法,则 fragment 肯定会附加到 Activity ,因此可以这样做:

public class PairActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
fragment = new SettingsFragment();
getFragmentManager().beginTransaction()
.replace(android.R.id.content, fragment)
.commit();
...
}


public static class SettingsFragment extends PreferenceFragment {
public void displayBeans(Collection<Bean> beans) {
...
for(Bean bean : beans) {
Preference pref = new Preference(getActivity());
pref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
PairActivity pairActivity = (PairActivity) getActivity();
// Do something with pairActivity instance
}
});
}
}
}

...
}

您只需确保不会将 fragment 作为 Actor (PairActivity) 附加到另一个 Activity 中然后会抛出异常。

关于java - Android OnPreferenceClickListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30423393/

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