问题描述
- 能将一个java监听器分离成给他自己的函数么?
-
我能将set-listener那一行分成小行么?
这是我现在的代码:protected void onCreate(Bundle savedInstanceState) { Preference button = (Preference)getPreferenceManager().findPreference("exitlink"); button.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference arg0) { finish(); return true; } });
我想要像这样的:
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Preference button = (Preference)getPreferenceManager().findPreference("exitlink"); if(button != null) { button.setOnPreferenceClickListener(onPreferenceClick); } } public boolean onPreferenceClick(Preference arg0) { finish(); return true; }
解决方案
上边的你的代码基本是可以的。给你上边的代码做个小改动:
button.setOnPreferenceClickListener(this);
然后按照需求,让你的类实现特定的接口,在这种情况下 Preference.OnPreferenceClickListener.
可以写一个函数,这个函数返回一个监听器,当你想要写类似的监听器但是需要一些变化的时候非常有用,就像下边这样
private Preference.OnPreferenceClickListener getListener(int listenerId) {
return new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference arg0) {
Log.i("MyTag", "Listener " + listenerId + " invoked!");
finish();
return true;
}
};
}
解决方案二:
你可以在你的方法外创建一个变量:
private Preference.OnPreferenceClickListener listener = new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference arg0) {
finish();
return true;
}
};
然后用它作为一个变量:setListener(listener).
这个可以让你再你的activity中有多个相同的监听器类
时间: 2024-10-03 04:08:08