-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」を表示する代わりに、「AboutUs」や「AboutCompany's Name」などをリストに表示するにはどうすればよいですか?

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 に答える