2014-03-04 68 views
0

我在MainActivity中有一個方法。 java的如何使用Activity1的方法,從activity2調用此方法?

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); 
    } 

我需要調用onclick事件這種方法在Dialog_mem.java

... 
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

是否也是Dialog_mem活動? –

+0

考慮使用runOnUiThread – Lovy

+0

你不能用這個作爲公共方法創建一個類嗎? – john

回答

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();} 

    } 
+0

請upvote答案,如果你發現它有幫助,使其他人可以受益.... –

+0

一旦我被允許這樣做,我會盡快樂於做到這一點。我不能投票,直到我有15名聲望 – anindis

+0

謝謝Anindis ... :) –

1

開始Dialog_mem致電startActivityForResult並在確定的情況下發送結果代碼。

在你的MainActivity當你從Dialog_mem回來時,onActivityResult會被調用,在這裏你可以檢查結果代碼並調用你的函數。

相關問題