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



公共类Activity1扩展活动{

billreminder br;//billreminder is a function in activity2
public void onCreate(Bundle savedInstanceState);

setContentView(R.layout.main);
br.read(c);//c is a string
}

我们如何调用read函数。

创建一个类并扩展Application,将读取方法移动到Application类。

形成"活动"调用getApplicationContext(),以获取要调用读取方法的Application对象。

示例:

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

有几种方法可以做到这一点。您可以将activity 2中的函数设置为静态函数。然后你可以这样称呼它:Activity2.read(c)

另一种方法是将意图从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

在activity 2中的onCreate方法中:

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

再次在活动1中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
   ....
}

避免对应用程序类进行子类化。来自android文档:

通常不需要对应用程序进行子类化。在大多数情况下,静态单体可以在更模块化的环境中提供相同的功能方法如果您的singleton需要全局上下文(例如注册广播接收器),检索它的功能可以被赋予当首先构造singleton。

此外,我认为你很困惑。您需要对对象调用一个方法。

账单提醒br//billreminder是activity 2中的一个函数2

是错误的。我想你的意思是br是一个物体。

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

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

但是,如果您想使用第二个活动的元素,在其中您已经编写了一个方法,那么您应该创建一个应用程序类,并且您必须将此方法移动到应用程序类。

最新更新