2013-10-29 7 views
7

मेरे पास एक गतिविधि और गैर गतिविधि वर्ग है। गैर गतिविधि वर्ग की गतिविधि कक्षा में एक विधि कॉल करने के लिए कैसेगतिविधि फॉर्म में विधि को कॉल करने के लिए कैसे करें गैर गतिविधि वर्ग

public class MainActivity extends Activity { 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main2); 

     DataClass dc = new DataClass(); 
     dc.show();     
    } 

    public void call(ArrayList<String> arr) { 
     // Some code... 
    } 
} 

public class DataClass { 

    public void show(ArrayList<String> array) { 
     // Here I want to send this ArrayList values into the call 
     // method in activity class. 

     MainActivity act = new MainActivity(); 
     act.call(array);     
    } 
} 
+0

देखें से उपयोग कर सकते हैं भी http://stackoverflow.com/questions/19666572/how-to-call-a-method-in-another-activity-from-activity और http: //stackoverflow.com/questions/16653867/android-call-method-from-an-other-activity – RenniePet

उत्तर

6

खैर कई चीजें आप कर सकता है देखते हैं। मुझे लगता है कि आप के लिए सबसे आसान तो जैसे DataClass में Context भेजने के लिए होगा:

DataClass dc =new DataClass(); 
dc.show(this); 

और में अपने DataClass एक वैश्विक वर Context context में संदर्भ बचाने के। तो फिर यह तो जैसे का उपयोग करें:

((MainActivity)context).call(array); 
13

बस DateClass अंदर एक कॉलबैक इंटरफ़ेस बनाने।

public DateClass { 
    public interface IDateCallback { 
     void call(ArrayList<String> arr); 
    } 

    private IDateCallback callerActivity; 

    public DateClass(Activity activity) { 
     callerActivity = (IDateCallback)activity; 
    } 
... 
} 

public void show(ArrayList<String> array) {    
    callerActivity.Call(array); 
    ... 
} 

//And implements it inside your activity. 

public class MainActivity extends Activity 
     implements IDateCallback { 

    public void call(ArrayList<String> arr) { 

    } 
} 
+0

यह करने का सबसे अच्छा तरीका है, स्पष्ट रूप से ... – 2Dee

+0

धन्यवाद बहुत दिन आपने अपना दिन बचाया :) –

+0

हां मुझे लगता है कि यह करने का पसंदीदा तरीका होना चाहिए। लेकिन इस दृष्टिकोण के बारे में एक प्रश्न, चूंकि हम डेटक्लास के लिए एक गतिविधि संदर्भ पारित कर रहे हैं, क्या इसका परिणाम स्मृति रिसाव नहीं होगा क्योंकि गतिविधि कचरा संग्रहण के लिए सक्षम नहीं होगी क्योंकि डेटक्लास का संदर्भ है? – akshayt23

1
((MainActivity)getContext).array(); 
0

वैसे ही जैसे एक सिंगलटन बनाने:

TeacherDashboardSingleton:

public class TeacherDashboardSingleton { 
public Teacher_Dashboard aa; 
private static final TeacherDashboardSingleton ourInstance = new TeacherDashboardSingleton(); 
    public static TeacherDashboardSingleton getInstance() { 
     return ourInstance; 
    } 
} 

myActivity वर्ग:

onCreate(....){ 
.... 
    TeacherDashboardSingleton.getInstance().aa = this; 
.... 
} 

इस गतिविधि में के रूप में ही उदाहरण का एक उद्देश्य पैदा करेगा

अब आप इसे कहीं भी

संबंधित मुद्दे