0

現在、動的に作成するテキストビューに onclicklistener を実装する際に問題が発生しています。問題をより詳しく説明します。私がする必要があるのは、アクティビティのボタンをクリックしたときにテキストビューを作成する必要があり、そのテキストビューをクリックすると削除されるはずです。しかし、各テキストビューに onclicklistener を設定することはできません。上記のボタン(テキストビューの作成に使用されるボタン)のonclick関数内にテキストビューのonclicklistenerを設定するため、ボタンのonclick関数から出るとスコープがオーバーします(これが問題だと思います)。だから私は目に見える機能と目に見えない機能を使ってみました。

ここに私のコードがありますこのボタンaddphoneは、edittext phonenoに存在する値を挿入することにより、動的にテキストビューを作成します

addphone.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
            // TODO Auto-generated method stub
        if(phoneno.getText().toString().length() > 0 && counter < MAX)
            {
                addphoneno[counter] = phoneno.getText().toString();
                phoneno.setText("");
                final TextView mybox = new TextView(getApplicationContext());
                mybox.setText(addphoneno[counter]);
                mybox.setPadding(5, 5, 5, 5);
                mybox.setBackgroundColor(Color.rgb(99, 99, 99));
                contactbox[counter] = mybox;
                contactbox[counter].setLayoutParams(new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
                contactbox[counter].setId(100+counter);
                contactbox[counter].setText(addphoneno[counter]+"  "+"X");

                contactbox[counter].setClickable(true);
                contactbox[counter].setOnClickListener(this);     //This doesn't work!!!!!
                counter = counter+1;
            }
    }
});

しかし、上記の行の setOnClickListener は機能していません

誰でもこの問題を手伝ってくれますか。私の質問が明確であることを願っています。

ありがとう!

4

3 に答える 3

1

これを試すことができます:

private OnClickListener phoneViewClickListener = new OnClickListener() {
    @Override
    public void onClick(View v) {
        // your code
    }
};

TextViews でそのリスナーを使用します。

contactbox[counter].setOnClickListener(phoneViewClickListener);
于 2013-02-17T05:07:23.840 に答える
0

ボタンが xml レイアウトで定義されている場合は、それを行うことができます。

xml レイアウトでは、ユーザーがボタンをクリックしたときに呼び出されるメソッドを定義できます。

 <?xml version="1.0" encoding="utf-8"?>
 <Button xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/add_phone"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:text="@string/button_send"
     android:onClick="addTextView" />  // This is most imporant line

アクティビティには、次のように View パラメータを持つ同じ名前のメソッドが必要です。

/** Called when the user touches the button */
public void addTextView(View view) {
    // Do something in response to button click
    if(phoneno.getText().toString().length() > 0 && counter < MAX)
        {
            addphoneno[counter] = phoneno.getText().toString();
            phoneno.setText("");
            final TextView mybox = new TextView(getApplicationContext());
            mybox.setText(addphoneno[counter]);
            mybox.setPadding(5, 5, 5, 5);
            mybox.setBackgroundColor(Color.rgb(99, 99, 99));
            contactbox[counter] = mybox;
            contactbox[counter].setLayoutParams(new   LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
            contactbox[counter].setId(100+counter);
            contactbox[counter].setText(addphoneno[counter]+"  "+"X");

            contactbox[counter].setClickable(true);
            contactbox[counter].setOnClickListener(this);     //This will work \o/
            counter = counter+1;
        }
}
}

このメソッドでは、コードを addViews に配置する必要があります。

追加されたすべてのテキストビューの動作は同じである必要があるため(私はそのように理解しました)、ユーザーがクリックしたときに削除される ため、アクティビティに onClickListener を実装させることができ、それを使用して onClick メソッドを正しく実装する必要がありますアクティビティ。

于 2013-02-17T05:33:27.480 に答える
0

単にブール値として設定するのではなく、実際に onClickListener を定義する必要があります。

contactbox[counter].setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        //this is where you would handle your click event
    }
});

幸運を!

于 2013-02-17T04:23:35.973 に答える