-1

我有一个显示“主菜单”项目列表的活动。单击时,每个列表项都应启动一个新活动。我通过使用它的类名加载适当的活动来做到这一点。

代码:

public class MenuActivity extends ListActivity {

    String classes[] = { "AboutUsActivity", "CompanyProfileActivity", "ProductsActivity", "ContactActivity" };

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, classes));
    }

    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {

        super.onListItemClick(l, v, position, id);

        String cheese = classes[position];
        try {
            Class ourClass = Class.forName("com.example.test." + cheese);
            Intent ourIntent = new Intent(this, ourClass);
            startActivity(ourIntent);
        }
        catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

因为我将类名存储在列表中,这就是向用户显示的内容,所以它对用户不是很友好。我怎样才能解决这个问题?

例如,我怎样才能让列表显示“关于我们”或“关于公司名称”之类的内容,而不是显示“AboutUs”?

4

2 回答 2

2

试试这个:

import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class MenuActivity extends ListActivity
{
    private String[] menuItems = { "About Us", "Company Profile", "Products", "Contact" };
    private String[] menuClassNames = { AboutUsActivity.class.getName(), CompanyProfileActivity.class.getName(), ProductsActivity.class.getName(), ContactActivity.class.getName() };

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);

        setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, menuItems));
    }

    @Override
    protected void onListItemClick(ListView l, View v, int position, long id)
    {
        super.onListItemClick(l, v, position, id);
        try
        {
            Intent intent = new Intent(this, Class.forName(menuClassNames[position]));
            startActivity(intent);
        }
        catch (ClassNotFoundException e)
        {
            e.printStackTrace();
        }
    }
}

或者,您可以创建menuClassNames一个Class[],然后您不需要执行按名称加载类的额外步骤。

于 2013-01-06T06:01:53.033 回答
0

使用 2 个数组,一个用于类,另一个用于要显示的名称。

于 2013-01-06T05:51:08.603 回答