如何使用activity1的activity1方法,从activity2调用此方法?

时间:2014-03-04 18:07:05

标签: android android-activity

我在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中的按钮被点击了?或许你知道另一种方法吗?

2 个答案:

答案 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,您可以查看结果代码并调用您的函数。