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

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

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

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

不知道你为什么要这样做,但你可以。

于 2012-02-23T19:08:22.240 回答
1

不,那是不可能的。毕竟,如果 Activity 在任何时候启动(例如,如果您通过 Intent 启动),Android 操作系统都需要实例化 Activity,并且如果ItemClass没有 parent则不可能实例化ListClass

请记住,每个活动都是完全独立的,并且可以通过意图在任何时候启动。

于 2010-10-29T18:58:49.800 回答
1

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

但是,我看不出它为什么不起作用的任何原因。只要两个类都是公共的,您就不能像往常一样在 AndroidManifest 中引用它吗?即 com.falmarri.ListClass.ItemClass?

编辑:没关系,正如 EboMike 指出的那样,这不起作用。

于 2010-10-29T19:02:50.627 回答