Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.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
Java 如何从另一个类调用具有startActivity(Intent)的方法?_Java_Android - Fatal编程技术网

Java 如何从另一个类调用具有startActivity(Intent)的方法?

Java 如何从另一个类调用具有startActivity(Intent)的方法?,java,android,Java,Android,我想从另一个类调用sendPicture()。但我似乎无法将sendPicture()设置为静态类型,因为它包含startActivity()。我想知道它是否可以从另一个类调用,如果可以,如何调用 sendPicture()code: public static void sendPicture() { File f=new File(Environment.getExternalStorageDirectory().getAbsolutePath()); Intent sendIn

我想从另一个类调用
sendPicture()
。但我似乎无法将
sendPicture()
设置为静态类型,因为它包含
startActivity()
。我想知道它是否可以从另一个类调用,如果可以,如何调用

sendPicture()
code:

 public static void sendPicture()
{

  File f=new File(Environment.getExternalStorageDirectory().getAbsolutePath());
  Intent sendIntent = new Intent(Intent.ACTION_SEND); 
  sendIntent.putExtra("address", "number");
  sendIntent.putExtra("sms_body", "See attached picture"); 
  sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(f));
  sendIntent.setType("image/jpg");  
  startActivity(sendIntent);
}

startActivity()是上下文的一种方法,因此需要对上下文进行引用。您可以尝试getApplicationContext().startActivity(sendIntent),或者将上下文传递到静态方法并使用该引用。

我不知道它是否正确,请尝试一下。假设您在class1中有一个名为“sendpicture()”的所谓函数,并且您想在class2中调用它。然后在class2中编写以下代码并重试

Class1  cls1= new Class1();
cls1.sendpicture();

@谢谢你的回答。但是我还是不知道怎么做。你有什么参考资料可以让我得到吗?首先,你应该了解一个活动是如何工作的,以及什么是上下文。如果没有这些,你将在Android框架中迷失方向。从这里开始:如果我的方法不是静态的怎么办?如何从另一个活动调用sendPicture()方法?从一个活动,您需要将活动的上下文传递给它。或者,您可以在已有的代码中使用getApplicationContext().startActivity(sendIntent)。从实例调用静态方法的形式非常糟糕。另外,由于该方法是静态的,因此调用startActivity()时他会遇到一个错误。@DavidCAdams:如果我们按如下方式导入Class2中的Class1:“import package_name.Class1;”。那么我们可以直接调用静态函数,对吗?顺便说一句,我不是来争论我只是一个初学者。只是表达了我的想法而已。