1

これから始まる

<Button
            android:onClick="onBtnClicked"
            android:id="@+id/btn_edit_shared_preferences"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/btn_show_map"
            android:layout_centerHorizontal="true"
            android:text="Edit Shared Preferences" />

ここでは、onClick コールバック関数に送信されるパラメーターは View オブジェクトのみであると述べています。

さて、この場合のように、いくつかの「追加パラメーター」が必要になる場合があります。アクティビティの起動を処理する関数があるため、次のようになります。

openActivity(View v){..}

一方、私がしたいレイアウトでは

:onclick="openActivity(activityClassName)"

これに似たことを行う正しい方法は何ですか?

4

3 に答える 3

2

あなたはあなたandroid:tag="YouActivity"と一緒に使用することができますandroid:onClick="openActivity"

Activityこれで、次のように名前を付けることができますopenActivity():

void openActivity(View v)
{
    String activityName = v.getTag().toString();
    Class<?> aClass = null;
    try {
            aClass = Class.forName("your.package."+activityName);
    } catch (ClassNotFoundException e) {
            e.printStackTrace();
    }
    startActivity(new Intent(this, aClass));
}
于 2012-12-27T14:57:09.157 に答える
0

イベントが取得する View オブジェクトのみのパラメーターですが、 ContextオブジェクトonClickを介してより多くの情報を取得できます。

于 2012-12-27T14:58:29.087 に答える
0

1 つのボタンは 1 つのメソッドに対応できます。余分なパラメーターを渡す方法はありません。たとえば、あなたの場合、ボタンでアクティビティを起動したいとします。そのための 1 つの方法は、そのアクティビティを起動するためだけのメソッドを記述することです。

<Button
        android:onClick="launchPreferencesActivity"
        android:id="@+id/btn_edit_shared_preferences"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/btn_show_map"
        android:layout_centerHorizontal="true"
        android:text="Edit Shared Preferences" />

次に、アクティビティで:

public void launchPreferencesActivity(View v){
        //start Activity
}

ボタンごとに、クリック イベントを処理するためのさまざまなメソッドを対応させることができます。または、必要に応じて、View パラメーターを使用して、メソッドを呼び出しているビューを識別し、その方法で処理することもできます。

ボタンの動作を変更する可能性のある他の要因が発生している場合は、コードで onClickListener をいつでも変更できます。しかし、一般的に、上記のアプローチは、あなたがやろうとしていることに対してよりうまく機能すると思います。

于 2012-12-27T15:01:22.687 に答える