android中嵌套的内部Activity类

Fal*_*rri 8 android nested-class inner-classes listactivity android-activity

声明一个可以在另一个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));

    }
}
Run Code Online (Sandbox Code Playgroud)

请注意,语法显然不是100%正确,主要是伪代码.

Dus*_*inB 11

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

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

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

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

  • 内部类必须是静态的! (2认同)

Ebo*_*ike 0

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

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

  • @whoabackoff - 作为一个静态内部类,当然,但这没有被要求 - 这样,你将无法访问“项目”,这正是OP所要求的。 (4认同)
  • 这是错误的。你完全可以做到这一点。请参阅下面达斯汀的回答。 (2认同)