我在MainActivity中有一个方法。的java
public void spinset(String[] a)
{
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, a);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spin_main = (Spinner) findViewById(R.id.spinner);
spin_main.setAdapter(adapter);
spin_main.setPrompt("Член семьи");
spin_main.setSelection(0);
}
我需要在Dialog_mem.java
中的onCLick事件上调用此方法...
MainActivity ma=new MainActivity();
...
public void onClick(View v) {
switch(v.getId())
{ case R.id.mem_btnOK:
datasource.open();
datasource.putrecord("Mem_Name", memname.getText().toString());
datasource.insertrecord("Members");
date=datasource.curspinner("Members", "Mem_Name");
datasource.close();
//HERE
ma.spinset(date);
default:
dismiss();}
}
但是我需要这个方法来为我的MainActivity工作,而不是为Dialog_mem工作。
或者有没有办法在MainActivity中知道Dialog_mem中的按钮被点击了?或许你知道另一种方法吗?
答案 0 :(得分:2)
您可以实现自己的界面以回调之前的活动,这可以如下所示完成
public interface myListener {
public void doMyWork(boolean success, Object message);
}
让你的mainActivity实现这个监听器并覆盖未实现的方法:
public class MainActivity extends Activity implements myListener{
onCreate(Bundle savedInstanceState){
Dialog_mem dm = new Dialog_mem();
dm.setmyListener(this);
}
public void doMyWork(boolean success,Object message){
// your code here
// call spinset from here
}
}
在Dialog_mem中创建setmyListener()方法
public class Dialog_mem {
myListener listener;
public void setmyListener(myListener listener){
this.listener = listener
}
}
当你想在spinset方法中工作时,通过调用此方法从Dialog_mem回调到MainActivity。
public void onClick(View v) {
switch(v.getId())
{ case R.id.mem_btnOK:
datasource.open();
datasource.putrecord("Mem_Name", memname.getText().toString());
datasource.insertrecord("Members");
date=datasource.curspinner("Members", "Mem_Name");
datasource.close();
//HERE
listener.doMyWork(success,message);
default:
dismiss();}
}
答案 1 :(得分:1)
通过调用Dialog_mem
启动startActivityForResult
,如果确定,请发送结果代码。
在MainActivity
中,当您从Dialog_mem
返回时,将调用onActivityResult,您可以查看结果代码并调用您的函数。