2010-11-25 11 views
2

私はDialogクラスを拡張して1つのサブクラスを持っている、私がそれを解決する方法を、Dialogクラスを拡張し、このサブクラスで新しい活動を開始する startActivity()機能を使用できないようですか?DialogのサブクラスでstartActivity()を開始する方法は?

ダイアログサブクラスで新しいアクティビティを開始するにはどうすればよいですか? (私のカスタマイズされたダイアログサブクラスでは、 ボタンが1つ押されたときに新しいアクティビティを開始したいと思います)。

答えて

4

startActivityは、Contextの方法です。

DialogContextは、Dialog.getContext()に電話することで検索できます。

+0

いいえ、これは役立ちません。 startActivity()は、Activityを継承するクラス内でのみ呼び出すことができます。クラスはDialogを継承しています。これはDialogクラスのサブクラスでstartActivityになります。 – Mellon

+0

'startActivity'はパブリックメソッドです。それは 'Dialog'から呼び出されますか? ( 'getContext()。startActivity'を呼び出すと?) –

1

startActivityをアクティビティ以外のコンテキストでも呼び出すことができますが、FLAG_ACTIVITY_NEW_TASKフラグを追加することで、新しいタスクにそれを起動する必要があります。

これにはいくつかの影響があります。そのため、たとえば、getApplicationContext()またはそうではなく、実際のアクティビティを使用してダイアログを起動するなど、そのダイアログ内でActivityに手を入れようとします。

それ以外の場合は、ダイスはありません。タスクの詳細については

、ダイアログを呼び出しているところhttp://developer.android.com/guide/topics/fundamentals.html#acttask

2

は、私が見ることができます参照してください?

あなたは何らかのアクティビティでこのダイアログショーを持っていて、その選択に基づいて新しいアクティビティを開始すると思います。

ネストされたクラスを使用している場合は、startActivity(currentClassName.this、targetClass.class)を使用してこれを行うことができますが、独自のクラス拡張ダイアログがあるので、ダイアログのコンストラクタにコンテキストを含めるようにします新しいアクティビティを起動すると、親アクティビティコンテキストを使用してダイアログクラスからアクティビティを起動できます。

私はこれを試したので、うまくいかないかもしれませんが、それを撃ってください。

だから、ダイアログを呼び出しアクティビティから、それはあなたのMyDialogClass内側から

MyDialog d = new MyDialog(currentClassName.this); 

のようないろいろ書い次のようになります。

public class MyDialog{ 
    private Context c; 

    public MyDialog(Context c){ 
     this.c=c; 
    } 

    public startActivityFromDialog(){ 
     startActivity(c,something.class); 
    } 
} 
関連する問題