首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ListActivity不工作

ListActivity不工作
EN

Stack Overflow用户
提问于 2014-11-16 05:36:16
回答 3查看 362关注 0票数 1

我正在创建一个菜单,其中我的所有活动都将出现在列表中,每当我从该列表中单击某个活动时,它都应该启动该活动。

这是我的menu.java

代码语言:javascript
复制
public class Menu extends ListActivity
{
    String classnames[] = {"MainActivity","example1","example2","example3",
    "example4","example5","example6","example7","example8","example9","example10"};
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setListAdapter(new ArrayAdapter<String>(Menu.this,android.R.layout.simple_list_item_1,classnames));
    }
    protected void onListItemClick(ListView l, View v, int position, long id)
    {
        super.onListItemClick(l, v, position, id);
        String classClicked = classnames[position];
        try
        {
            Class ourclass = Class.forName("android.intent.action."+classClicked);
            Intent intent = new Intent(Menu.this,ourclass);
            startActivity(intent);
        }
        catch(ClassNotFoundException e)
        {
            e.printStackTrace();
        }
    }

}

这是我的舱单:

代码语言:javascript
复制
<application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".Menu"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAINACTIVITY" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
</application>

它没有任何错误,但是我的MainActivity即使在我点击它的时候也没有启动。

看上去是这样的:

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-11-16 05:40:31

使用getListView().setOnItemClickListener而不是onListItemClick。为什么?老实说,我也不知道,但它解决了我的问题。

票数 2
EN

Stack Overflow用户

发布于 2014-11-16 09:29:17

您必须在AndroidManifest.xml中声明您的所有活动,否则它将无法工作。更新的清单文件应该如下所示:

代码语言:javascript
复制
<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".Menu"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAINACTIVITY" />

            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>

    <activity
        android:name=".example1"
        android:label="@string/app_name"
        android:parentActivityName=".MainActivity" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value=".MainActivity" />
    </activity>

    <activity
        android:name=".example2"
        android:label="@string/app_name"
        android:parentActivityName=".MainActivity" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value=".MainActivity" />
    </activity>

    <activity
        android:name=".example3"
        android:label="@string/app_name"
        android:parentActivityName=".MainActivity" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value=".MainActivity" />
    </activity>

    <activity
        android:name=".example4"
        android:label="@string/app_name"
        android:parentActivityName=".MainActivity" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value=".MainActivity" />
    </activity>

    <activity
        android:name=".example5"
        android:label="@string/app_name"
        android:parentActivityName=".MainActivity" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value=".MainActivity" />
    </activity>

    <activity
        android:name=".example6"
        android:label="@string/app_name"
        android:parentActivityName=".MainActivity" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value=".MainActivity" />
    </activity>

    <activity
        android:name=".example7"
        android:label="@string/app_name"
        android:parentActivityName=".MainActivity" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value=".MainActivity" />
    </activity>

    <activity
        android:name=".example8"
        android:label="@string/app_name"
        android:parentActivityName=".MainActivity" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value=".MainActivity" />
    </activity>

    <activity
        android:name=".example9"
        android:label="@string/app_name"
        android:parentActivityName=".MainActivity" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value=".MainActivity" />
    </activity>

    <activity
        android:name=".example10"
        android:label="@string/app_name"
        android:parentActivityName=".MainActivity" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value=".MainActivity" />
    </activity>
</application>

Menu.java

代码语言:javascript
复制
public class Menu extends ListActivity
{
String classnames[] = {"MainActivity","example1","example2","example3",
"example4","example5","example6","example7","example8","example9","example10"};
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setListAdapter(new ArrayAdapter<String>(Menu.this,android.R.layout.simple_list_item_1,classnames));

getListView().setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, final int position, long l) {

            String classClicked = classnames[position];

            try {
                    Class ourclass = Class.forName("android.intent.action."+classClicked);
                    Intent intent = new Intent(getApplicationContext(),ourclass);
                    startActivity(intent);
                }
                catch(ClassNotFoundException e)
                {
                    e.printStackTrace();
                }

        }
    });
}
protected void onListItemClick(ListView l, View v, int position, long id)
{
    /*super.onListItemClick(l, v, position, id);
    String classClicked = classnames[position];
    try
    {
        Class ourclass = Class.forName("android.intent.action."+classClicked);
        Intent intent = new Intent(Menu.this,ourclass);
        startActivity(intent);
    }
    catch(ClassNotFoundException e)
    {
        e.printStackTrace();
    }*/
}

}

现在一切都正常了。

票数 1
EN

Stack Overflow用户

发布于 2014-11-16 06:00:35

您必须在清单中注册其他活动,就像主体活动一样。否则,Android就不会启动它们。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26954166

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档