0

作業やコードを複製することなく要素を簡単に再利用できるように、コードを整理しようとしています。

アプリケーションで結果を処理するための contactpicker とコードがあり、複数の領域で再利用できるように独自の外部クラスに入れたいと考えています。

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

外部連絡先ピッカーとして使用しているクラスは次のとおりです。

    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);

}
}

したがって、次を使用してメインアクティビティからどのように呼び出すことができますか:

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

cf.startContactPicker();
4

2 に答える 2

2

できることは、アクティビティからクラス コンストラクターにコンテキストを渡すことです。保存します。後でそのコンテキストを使用して、ダイアログやそのアクティビティから必要なものを作成できます。

class myclass {
    Context context;

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

atcitivity から、次のようにする必要があります。

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

アクティビティと同じ目的で、クラスでコンテキストを使用できるようになりました。たとえば、アクティビティを開始したい場合は、簡単に書くことができます。

context.StartActivity(intent);

それがあなたを助けることを願っています..

于 2012-05-07T08:28:37.650 に答える
0

このオブジェクトを作成するものthisとして渡します。Activity

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

started によって与えられた結果を処理するためにonActivityResult()、あなたにも実装することを覚えておいてください。ActivityActivity

あなたのために実装し、基本からすべての(使用したい)を拡張する基本Activityクラスを用意することをお勧めしますonActivityResult()ContactFinderActivityContactFinderActvitiy

于 2012-05-07T08:29:18.947 に答える