如何从主活动中调用活动中的函数

时间:2012-02-23 05:09:31

标签: android

公共类Activity1扩展了Activity {

billreminder br;//billreminder is a function in activity2

public void onCreate(Bundle savedInstanceState);



setContentView(R.layout.main);

br.read(c);//c is a string

}

我们如何调用读取功能。

3 个答案:

答案 0 :(得分:1)

创建一个类并扩展Application,将您的read方法移动到Application类。

形成您的活动调用getApplicationContext()以使Application对象调用read方法。

示例:

ApplicationCalssName bmodel = (ApplicationCalssName) getApplicationContext();
bmodel.read(c);

答案 1 :(得分:0)

创建一个函数static,以便您可以在任何活动中使用它。

如果您的方法使用上下文,则将上下文作为参数传递。

但是如果你想使用你编写方法的第二个活动的元素,那么你应该创建一个Application类,你必须将这个方法移动到应用程序类。

答案 2 :(得分:0)

有几种方法可以做到这一点。您可以使activity2中的函数成为静态函数。然后,您可以这样调用它:Activity2.read(c)

另一种方法是将一个intent从Activity1传递给Activity2,如下所示:

活动1中的

Intent intent = new Intent(Activity1.this, Activity2.class);
intent.putExtra("c", c);
//this will put a callback in the onActivityResult method for the Activity1 class
startActivityForResult(intent, requestCode);//requestCode is an int
在onCreate方法中的activity2中

Bundle extras = getIntent().getExtras();

if(extras != null) {
    c = extras.getString("c");
    if(c != null && !"".equals(c)) {
        read(c);
    }
    setResult(resultCode);//resultCode is an int
}

在activity1中再次1:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
   super.onActivityResult(requestCode, resultCode, data);
   //detect resultCode or requestCode, and do whatever you want
   ....
}

避免继承Application类。来自android docs

  

通常不需要子类Application。在大多数情况下,   静态单例可以在更模块化的情况下提供相同的功能   办法。如果您的单身人士需要全局上下文(例如注册   广播接收器),可以给出一个检索它的功能   内部使用Context.getApplicationContext()的Context   首先构建单身人士。

另外,我觉得你很困惑。您需要在对象上调用方法。

  

billreminder br; // billreminder是activity2中的一个函数

错了。我认为你的意思是br是一个对象。