2012-05-07 8 views
0

私はコードを整理して、作業/コードを複製することなく要素を簡単に再利用できるようにしたいと考えています。StartActivityforResultを外部クラスに移動

自分のアプリケーションで結果を処理するためのコンタクトピッカーとコードを用意しています。これを複数の領域で再利用できるように独自の外部クラスに入れたいと思います。

私はStartActivityforResultを呼び出すために、外部クラスにアクティビティを渡す必要がありますが、その方法はわかりません。あなたは何ができるか

ContactFinder cf=new ContactFinder(???));// how do I pass the activity to this external class 

cf.startContactPicker(); 

答えて

0

パスthisを助けることを願っています。

ContactFinder cf=new ContactFinder(this); 
cf.startContactPicker(); 

開始Activityによって指定された結果を処理するために、またあなたのActivityonActivityResult()を実装することに注意してください。

より良いあなたのContactFinderためonActivityResult()を実装し、拡張するための基本的なActivityクラスを持っているすべての私は実際には同じ外部のクラス内の結果を実装して、基本的なActvitiy

+0

から(あなたがContactFinderを使用したい)Activityデータを現在のアクティビティに引き込むゲッターを作成しました。私はあなたの理由も理解できます。多くのおかげで助けに:) –

2

は次のとおりですので、私は、以下の使用して私の主な活動からそれを呼び出す方法

public class ContactFinder { 

    private static final int CONTACT_PICKER_RESULT = 1001; 
    private Activity atv; 
    public ContactFinder(Activity atv) { 
     this.atv=atv; 
    } 
public void startContactPicker() 
{ 
    Intent contactPickerIntent=new Intent(Intent.ACTION_PICK,ContactsContract.CommonDataKinds.Phone.CONTENT_URI); 
    //Shows CONTACT_PICKER_RESULT cannot be resolved to a variable 
    atv.startActivityForResult(contactPickerIntent, CONTACT_PICKER_RESULT); 

} 
} 

:ここ

は、私は、外部コンタクトピッカーとして使用していたクラスですクラスコンストラクタ内のコンテキストをアクティビティから渡します。それを保存します。後で、そのコンテキストを使用してダイアログや、そのアクティビティから必要なものを作成することができます。

myclass ob = new myclass(getApplicationContext() or this); 

今は活動と同じ任意の目的のために自分のクラスにコンテキストを使用することができます。あなたatcitivityから

class myclass { 
    Context context; 

    myclass(Context temp_context) { 
     context = temp_context; 
    } 
} 

はそのようにしなければなりません。 あなたが活動を開始したいのなら、あなたは単に書くことができます。

context.StartActivity(intent); 

は、それはあなたがこのオブジェクトを作成しているActivityとしてあなた...

関連する問題