从 Spinner Class 回调到 FragmentActivity

Callback from Spinner Class to FragmentActivity

我必须知道 Activity 中微调器的点击事件。 MultiSelectionSpinner Class 的 OnClick 方法被调用,但我不知道如何为 Activity 创建回调方法。 以下是 Spinner Class 和 Activity.

public class MultiSelectionSpinner extends Spinner implements
        OnMultiChoiceClickListener {
    String[] _items = null;
    boolean[] mSelection = null;

    ArrayAdapter<String> simple_adapter;

    public MultiSelectionSpinner(Context context) {
        super(context);

        simple_adapter = new ArrayAdapter<String>(context,
                android.R.layout.simple_spinner_item);
        super.setAdapter(simple_adapter);
    }

    public MultiSelectionSpinner(Context context, AttributeSet attrs) {
        super(context, attrs);

        simple_adapter = new ArrayAdapter<String>(context,
                android.R.layout.simple_spinner_item);
        super.setAdapter(simple_adapter);
    }

    public void onClick(DialogInterface dialog, int which, boolean isChecked) {
        if (mSelection != null && which < mSelection.length) {
            mSelection[which] = isChecked;

            simple_adapter.clear();
            simple_adapter.add(buildSelectedItemString());


        } else {
            throw new IllegalArgumentException(
                    "Argument 'which' is out of bounds.");
        }
    }




public class mainActivity extends FragmentActivity

// Thats the spinner
MultiSelectionSpinner spinner;

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main); 

// Here I load the spinner with the Names       
spinner = (MultiSelectionSpinner) findViewById(R.id.spinner);
spinner.setItems(Names);

最直接的方法是在 MultiSelectionSpinner 中创建您的 Activity 实现的另一个侦听器接口。

public interface MySpinnerListener{
   public void onItemClicked(int which);
}

MySpinnerListener listener;
public void setListener(MySpinnerListener  listener) {      
    this.listener = listener;       
}

public void onClick(int which,...){
   listener.onClick(which);
   ...
}

然后在您的 Activity

中实现回调
spinner = (MultiSelectionSpinner) findViewById(R.id.spinner);
spinner.setListener(new MultiSelectionSpinner.MySpinnerListener(){

    @Override
    public void onClick(int which){
        // callback 
    }   
});