Androidのネストされた内部活動クラス
-
27-09-2019 - |
質問
別のアクティビティクラス内のアクティビティを拡張するクラスを可能にするクラスを宣言していますか?もしそうなら、そのクラスをマニフェストに登録するにはどうすればよいですか?また、それは合理的に行うことができることですか、それとも悪い考えですか?
私はようなものを考えていました
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%正しいものではなく、ほとんどが擬似コードではありません。
解決
いいえ、それは不可能です。結局のところ、Androidオペレーティングシステムは、任意の時点で開始された場合(意図を経て開始する場合)、アクティビティをインスタンス化する必要があり、インスタンス化することは不可能です。 ItemClass
親なし ListClass
.
各アクティビティは完全に独立しており、意図を通していつでも開始できることを忘れないでください。
他のヒント
はい、それは機能します - それは単なる別のクラスです - あなたはAndroidManifest.xmlで内部クラスの表記を使用してあなたのアクティビティを宣言する必要があります:
u003Cactivity android:name=".ListClass$ItemClass"/>
私にとってはうまくいくようですが、おそらくこの質問が尋ねられたとき、それはAndroidの古いバージョンではサポートされていませんでしたか?
なぜこれをやりたいのかわからないが、できる。
なぜあなたがこれをやりたいのか興味があります。
しかし、私はそれがうまくいかない理由はありません。両方のクラスが公開されている限り、通常はAndroidManifestでそれを参照できませんか? IE com.falmarri.listclass.itemclass?
編集:ebomikeが指摘したように、これはうまくいきません。