【发布时间】:2014-03-01 21:03:08
【问题描述】:
我正在开发一个 android 应用程序,并且我正在实现自己的侦听器,因此我的片段可以在选择微调器值时做出反应。问题是当我在我的片段中调用刷新方法时,我不断得到一个无限循环。
SpinnerAdapter:
public interface OnSpinnerItemSelectedListener {
public void onSpinnerItemSelected(int index);
}
public SpinnerAdapter(Activity context, OnSpinnerItemSelectedListener listener){
super(context)
mListener = listener;
}
private OnSpinnerItemSelectedListener mListener;
Spinner spinner;//Already initialized and contains values, but I didn't think it would be important to show that here.
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
if (mListener != null) {
mListener.onSpinnerItemSelected(i);
}
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
片段适配器初始化:
SpinnerAdapter adapter = new SpinnerAdapter(getActivity(), new SpinnerAdapter.OnSpinnerItemSelectedListener() {
@Override
public void onSpinnerItemSelected(int index) {
refreash(SpinnerFragment.this,getActivity());
}
});//calls the refresh method infinite number of times.
刷新方法
//the problem isn't the implementation, its just that interface keeps calling it repeatedly.
public void refreash(Fragment f,Context activity) {
getFragmentManager().beginTransaction().replace(R.id.content_frame,f).commit();
}
【问题讨论】:
-
包含
refreash()的代码。 -
实际上如果您不提供导致问题的代码,我们无法帮助您...
-
我很确定它不是刷新片段。它一直被多次调用。我现在就发。
-
我认为 Spinner.setAdapter() 会调用 onItemSelected 方法,可能会导致无限循环。您的代码中的 setAdapter 在哪里调用?
标签: java android interface adapter