0

写真を撮るためにデフォルトのカメラアプリを使用するアプリに取り組んでいます。ここで、写真が撮られているかどうかを確認したいと思います。

私はこの方法でそれができることをSOで読みました:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  ...
    }

私の問題は、Activity クラスではないクラスにそのメソッドを入れると、エラーが発生したことです。

「メソッド onActivityResult(..) は、スーパータイプ メソッドをオーバーライドまたは実装する必要があります」

私はすでに確認しました。私のコンパイラは Java 1.6 に設定されています。私のjreは1.6に設定されています。

私は何をすべきか?

4

2 に答える 2

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);
    ...
}
于 2012-10-12T14:42:16.430 に答える
2

別のアクティビティまたはフラグメント内のアクティビティからのみ結果を取得できます。したがって、Activity またはその子孫の 1 つを拡張するクラスからのみ 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
   }

}
于 2012-10-12T14:38:55.067 に答える