Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何从主活动调用活动中的函数_Android - Fatal编程技术网

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

Android 如何从主活动调用活动中的函数,android,Android,公共类活动1扩展活动{ 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函数。创建一个类并扩展应用程序,将read方法移动到应用程序类 形成活动调用getApplicationCont

公共类活动1扩展活动{

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函数。

创建一个类并扩展
应用程序
,将read方法移动到应用程序类

形成活动调用
getApplicationContext()
以获取要调用read方法的应用程序对象

例如:

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

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

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


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

有几种方法可以做到这一点。您可以将activity2中的函数设置为静态函数。然后可以这样调用它:
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
在activity2的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
}
在activity1 again1中:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
   super.onActivityResult(requestCode, resultCode, data);
   //detect resultCode or requestCode, and do whatever you want
   ....
}
避免将应用程序类子类化

通常不需要对应用程序进行子类化。在大多数情况下, 静态单例可以以更模块化的方式提供相同的功能 如果你的单身汉需要一个全局上下文(例如注册) 广播接收器),检索它的函数可以给定 上下文,当 首先构造单例

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

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


是错误的。我想你的意思是br是一个对象。

我得到一个错误作为“对于类型ApplicationClassName,读取的方法未定义。请给出扩展应用程序类而不是ApplicationCalssName的类名。ApplicationCalssName是我在上述代码中使用的一个伪名称。是的,我是这样给出的。现在它得到了解决。我在主活动中声明了该函数