8

別のActivityクラス内でActivityを拡張するクラスを宣言することは可能ですか?もしそうなら、どのようにマニフェストにそのクラスを登録しますか?また、それは合理的にできることですか、それとも悪い考えですか?

私は次のようなことを考えていました

class ListClass extends ListActivity{

    ...
    ArrayList items;

    class ItemClass extends Activity{

        ...
        Item item;

        @Override
        onCreate(){
            Integer pos = getIntent().getExtras().getInt("pos");
            item = items.get(pos);
        }
    }

    @Override
    onItemClick(int position){

        startActivity(new Intent(this, ItemClass.class).putExtra("pos", position));

    }
}

構文が100%正しくないことは明らかであり、ほとんどが擬似コードであることに注意してください。

4

3 に答える 3

11

Yes, it does work -- it is just another class -- you just need to declare your activity using inner class notation in AndroidManifest.xml:

<activity android:name=".ListClass$ItemClass"/>

Seems to work fine for me, but perhaps when this question was asked, it wasn't supported in older versions of Android?

Not sure WHY you'd want to do this, but you can.

于 2012-02-23T19:08:22.240 に答える
1

いいえ、それは不可能です。結局のところ、Androidオペレーティングシステムは、アクティビティがいずれかの時点で開始された場合(たとえば、インテントを介して開始した場合)にアクティビティをインスタンス化する必要がありItemClass、親なしでインスタンス化することは不可能ListClassです。

各アクティビティは完全に独立しており、インテントを通じていつでも開始できることを忘れないでください。

于 2010-10-29T18:58:49.800 に答える
1

なぜあなたがこれをしたいのか私も興味があります。

しかし、それが機能しない理由はわかりません。両方のクラスがパブリックである限り、通常どおりAndroidManifestで参照できませんでしたか?つまり、com.falmarri.ListClass.ItemClass?

編集:気にしないでください、これはEboMikeが指摘したようには機能しません。

于 2010-10-29T19:02:50.627 に答える