我认为我的 Android 应用程序在某个地方犯了设计错误。我的(简化的)代码粘贴在下面。
我在 MainActivity 中使用 writeMidi 方法。但是,当在自定义监听器中触发“onItemSelected”时,我也想使用它,或者实际上只是触发它。
我对如何做到这一点感到有点困惑。我应该重新设计此代码以适应主要 Activity 中的自定义监听器吗?
感谢您的帮助。
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;
}
}
最佳答案
在主类中使用广播接收器并发送不同类型的广播(不同的消息)来激活主 Activity 中的不同方法。
关于java - 从另一个类访问 MainActivity 中的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13622510/