我正在开发一款使用默认相机应用拍照的应用。现在我想检查是否拍了照片。
我读到SO可以用这种方法完成:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
...
}
我的问题是当我把这个方法放在我的类中时,这不是一个Activity类,我得到了错误:
“onActivityResult(..)方法必须覆盖或实现超类型方法”
我已经检查过,我的编译器设置为java 1.6。我的jre设置为1.6。
我该怎么办?
答案 0 :(得分:3)
您需要Activity
订单才能收到相机操作的结果。为什么要将代码放在其他类中?如果它只是为了重复使用/组织,那么为什么不从你的Activity
打电话给你的其他班级?
public class SomeOtherClass {
public static void someOtherMethod(int requestCode, int resultCode, Intent data){
...
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
SomeOtherClass.someOtherMethod(requestCode,resultCode,data);
...
}
答案 1 :(得分:2)
您只能从另一个Activity或Fragment中的Activity获取结果。 因此,您只能从扩展Activity或其中一个后代的类中扩展onActivityResult()(这实际上是与java相关的而不是与android相关的)。 此外,您必须在调用startActivityForResult()的同一活动中扩展和定义onActivityResult()。
如果你需要在另一个不扩展Activity的类中执行代码,你可以简单地实现自己的方法并从内部调用onActivityResult()
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode == MY_REQUEST_CODE && resultCode == RESULT_OK)
{
MyClass object = new MyClass(); //or maybe it's already instantiated and it is defined as a field
object.myCustomMethod(data); //pass it data or one of it's extras
}
}