2

this次のコードでコンテキストとして渡せないのはなぜですか?エラーが発生します

The constructor DataManager(new View.OnClickListener(){}) is undefined

私はアンドロイドプログラミングに不慣れなので、質問が変ならごめんなさい!

どんな助けでも素晴らしいでしょう。

    btn.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub

            Log.d("vkx", "clk insert");
String qq="insert into users(id,name,password) values ('6','usrs','passs')";
            DataManager dm=new DataManager(this);
            dm.SqliteExecutenonquery(qq);

            Log.d("vkx", "clk insert done");
        }
    });

DataMangerクラスがあります

        public DataManager(Context cont) {
    super(cont, DBname, null, DBver);
}
    ....
4

5 に答える 5

0

したがって、DataManager をインスタンス化するときに、コンテキストをパラメーターとして渡すのではなく、実際に OnClickListener のインスタンスを渡します。

DataManager dm=new DataManager(YOUR_CLASS_NAME.this);

YOUR_CLASS_NAME はアクティビティ クラス名にする必要があります。すなわち

class MyClass extends Activity{

  public onCreate(Bundle savedInstanceState){
    Button btn = new Button();
    btn.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View arg0) {
           DataManager dm=new DataManager(MyClass.this);

        }
    });

  }
}

これを試してみて、どうなるか教えてください

于 2012-10-18T20:03:13.030 に答える
0

MyClassName.this「MyClassName」がアクティビティの名前であると仮定して、と書くだけです。

于 2012-10-18T19:59:54.907 に答える
0

setOnClickListenerこの行を追加する前に:

final Context ThisContext = this;

リスナーでこれを使用します

DataManager dm=new DataManager(ThisContext);
于 2012-10-18T20:00:50.407 に答える
0

匿名クラスを作成しましたnew OnClickListener() {

型パラメーターとしてのDataManagerクラスのコンストラクターはありません。OnClickListener

thisの代わりに、使用する必要があると思いますgetApplicationContext();

于 2012-10-18T19:51:34.667 に答える
0

「this」は、含まれているクラスの現在のインスタンスへの参照です。

「this」を使用した場合、タイプ onClickListener の匿名内部クラスのインスタンスを参照します。

onClickListener を定義するアクティビティのコンテキストを渡したいと思うかもしれません。その場合、MyActivity.thisMyActivity が Activity クラスの名前である を使用します。

于 2012-10-18T19:58:21.030 に答える