2013-10-29 98 views
7

我有一个Activity和非Activity类。如何从非活性类调用活动类中的方法如何调用非活动类的活动方法

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

那么有一些事情可以做。我认为最简单的你会在Context送入DataClass像这样:

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

是的我认为这应该是最好的办法。 但是有关这种方法的问题,因为我们将一个活动引用传递给DateClass,它不会导致内存泄漏,因为该活动将无法进行垃圾回收,因为DateClass持有对它的引用? – 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; 
.... 
} 

这将创建相同的实例的对象作为活动

现在你可以从任何地方

相关问题