4

すべてのレイアウトとOnClick()メソッドに100個のボタンがあります。

使用する場合は、100 個のボタンすべてswitchに対して行う必要があります。case R.id.button1, ..., case R.id.button100このコードを短くするには?

public void webClick(View v) 
{
    switch(v.getId())
    {
    case R.id.button1:
        Intent intent = new Intent(this, Webview.class);
        intent.putExtra("weblink","file:///android_asset/chapter/chapter1.html");
        startActivity(intent);
        break;

    case R.id.button2:
        Intent intent2 = new Intent(this, Webview.class);
        intent2.putExtra("weblink","file:///android_asset/chapter/chapter2.html");
        startActivity(intent2);
        break;

    // ...

    case R.id.button100:
        Intent intent100 = new Intent(this, Webview.class);
        intent100.putExtra("weblink","file:///android_asset/chapter/chapter100.html");
        startActivity(intent100);
        break;
    }
 }
4

6 に答える 6

5

URL が ID に直接依存している場合は、次を試してください。

public void webClick(View v) 
{
    Intent intent = new Intent(this, Webview.class);
    intent.putExtra("weblink","file:///android_asset/chapter/chapter" + v.getId() + ".html");
    startActivity(intent);
}

編集済み

URL が ID に直接依存しない場合は、次のようにボタン ID を URL にマッピングしてみてください。

Map<Integer, String> urls = new HashMap();

urls.put(R.id.button1, "file:///android_asset/chapter/chapter100.html");
// ... 1 to 100 ...

上記のコードを次のように変更します。

public void webClick(View v) 
{
    Intent intent = new Intent(this, Webview.class);
    intent.putExtra("weblink", urls.get(v.getId()));
    startActivity(intent);
}

編集#2

ボタンのラベルにすでに URL がある場合、提案 (私のものではなく @pad によって作成された) は、それを使用して次のように URL を計算することです。

public void webClick(View v) 
{
    Intent intent = new Intent(this, Webview.class);
    intent.putExtra("weblink", "file:///android_asset/chapter/chapter" + v.getText().replaceAll("Chapter ","") + ".html"); // Assuming your text is like "Chapter 50"
    startActivity(intent);
}
于 2013-08-05T10:55:56.767 に答える
-5
public void webClick(View v) 
{
    Intent intent = new Intent(this, Webview.class);

    switch(v.getId())
    {
        case R.id.button1:
            intent.putExtra("weblink","file:///android_asset/chapter/chapter1.html");
            startActivity(intent);
            break;

        case R.id.button2:
            intent.putExtra("weblink","file:///android_asset/chapter/chapter2.html");
            startActivity(intent);
            break;

        case R.id.button3:
            intent.putExtra("weblink","file:///android_asset/chapter/chapter3.html");
            startActivity(intent);
            break;
.
.
.
.

        case R.id.button100:
            intent.putExtra("weblink","file:///android_asset/chapter/chapter100.html");
            startActivity(intent);
            break;
        default:
            break;
     }

}
于 2013-08-05T10:55:01.870 に答える