2016-08-10 10 views
0

onActivityResultを使用する必要があります。アンドロイド - クラスからonActivityResultを使用する方法

は、どのように私は私のクラスのコンテキストを処理することができ、問題がある
startActivityForResult(captureIntent, CAMERA_CAPTURE); 


    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 

    } 

、私がきたとの使用:私は私のクラスでこのコードを使用

は、このコードはカメラやproccesingデータの呼び出しstartActivityForResultを求めて私のクラスのonActivityResult
約10回使用されるため、をacitivtyに実装したくないので、コードを繰り返さないようにします。

どのようにすればいいですか?

+0

だけでなく、あなたのインターフェイスまたは意向放送 –

+0

は「それは約10回使用されますと、私はコードを繰り返す必要はありません」を取得didntのことも、あなたは常に異なる要求コードを指定し、それらを区別することができます –

答えて

0

あなたは。あなただけのシンプルなInterfaceを作成し、tahtを実施し、活動結果を取得し、このようなあなたのクラス.somethingをに送信する主な活動を使用する必要があり、すべてのクラスでstartActivityForResultを実装する必要はありません。

インタフェース:

public interface IMyClass { 
    void getResult(int requestCode, int resultCode, Intent data); 
    } 

主な活動:

public class MainActivity extends AppCompatActivity { 
    static MainActivity mainActivityOBJ; 
    IMyClass requestedClass; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    mainActivityOBJ=this; 
    } 

    public void startActivityForMe(IMyClass c , Intent intent,int requestCode) 
    { 
    requestedClass=c; 
    startActivityForResult(intent,requestCode); 
    } 



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

    if(requestedClass!=null) 
     { 
     requestedClass.getResult(requestCode,resultCode,data); 
     } 
    } 
} 

とあなたのクラス:

public class MyClass implements IMyClass { 
    @Override 
    public void getResult(int requestCode, int resultCode, Intent data) { 

    } 

    private void StartAC() 
     { 
     Intent intent=new Intent(MainActivity.mainActivityOBJ,someActivity.class); 
     MainActivity.mainActivityOBJ.startActivityForMe(this,intent,1); 
     } 
    } 
関連する問題