android中嵌套的内部Activity类

时间:2010-10-29 18:56:27

标签: android android-activity inner-classes listactivity nested-class

是否可以声明一个可以在另一个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%正确,主要是伪代码。

3 个答案:

答案 0 :(得分:11)

是的,它确实有效 - 它只是另一个类 - 您只需要在AndroidManifest.xml中使用内部类表示法声明您的活动:

  

< activity android:name =“。ListClass $ ItemClass”/>

似乎对我来说工作正常,但也许在问到这个问题时,旧版本的Android不支持它?

不确定为什么要这样做,但你可以。

答案 1 :(得分:1)

不,那是不可能的。毕竟,Android操作系统将需要实例化Activity,如果它在任何时候启动(例如,如果你通过意图启动它),并且在没有父{{1}的情况下实例化ItemClass是不可能的。 }。

请记住,每个活动都是完全独立的,可以通过意图随时启动。

答案 2 :(得分:1)

我也很好奇你为什么要这样做。

但是,我认为没有任何理由不起作用。你能不能像通常那样在AndroidManifest中引用它,只要这两个类都是公共的?即com.falmarri.ListClass.ItemClass?

编辑:没关系,这不像EboMike指出的那样有用。