Android アプリのどこかで設計ミスをしていると思います。私の(簡略化された)コードを以下に貼り付けます。
MainActivity で writeMidi メソッドを使用しています。ただし、カスタムリスナーで「onItemSelected」がトリガーされたときに、それを使用したり、実際にトリガーしたりしたいと思います。
私はそれを行う方法について少し引き裂かれています。メイン アクティビティの customlistener に適合するように、このコードを再設計する必要がありますか?
助けてくれてありがとう。
public class MainActivity extends Activity{
int song = 0;
int[] music;
public int instrument;
public CustomOnItemSelectedListener listener;
// *******************************************************
// set Layout - on create
// *******************************************************
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
instrument = 0;
listener = new CustomOnItemSelectedListener();
addListenerOnSpinnerItemSelection();
//more stuff, including using the writeMidi method
};
public void addListenerOnSpinnerItemSelection(){
instrumentSp = (Spinner) findViewById(R.id.instrument);
instrumentSp.setOnItemSelectedListener(listener);
}
public void writeMidi(int[] music, int count) {
// so some stff
}
}
および別のファイルで。
public class CustomOnItemSelectedListener implements OnItemSelectedListener {
private int instrument = 0;
public void onItemSelected(AdapterView<?> parent, View view, int pos,long id) {
Toast.makeText(parent.getContext(),
"Please wait a minute for the instrument to be changed. ", Toast.LENGTH_SHORT).show();
instrument = pos;
}
public int getInstrument(){
return instrument;
}
}