是否可以声明一个可以在另一个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%正确,主要是伪代码。
答案 0 :(得分:11)
是的,它确实有效 - 它只是另一个类 - 您只需要在AndroidManifest.xml中使用内部类表示法声明您的活动:
< activity android:name =“。ListClass $ ItemClass”/>
似乎对我来说工作正常,但也许在问到这个问题时,旧版本的Android不支持它?
不确定为什么要这样做,但你可以。
答案 1 :(得分:1)
不,那是不可能的。毕竟,Android操作系统将需要实例化Activity,如果它在任何时候启动(例如,如果你通过意图启动它),并且在没有父{{1}的情况下实例化ItemClass
是不可能的。 }。
请记住,每个活动都是完全独立的,可以通过意图随时启动。
答案 2 :(得分:1)
我也很好奇你为什么要这样做。
但是,我认为没有任何理由不起作用。你能不能像通常那样在AndroidManifest中引用它,只要这两个类都是公共的?即com.falmarri.ListClass.ItemClass?
编辑:没关系,这不像EboMike指出的那样有用。