2012-01-19 6 views
0
btn2=(Button) rowView.findViewById(R.id.button1); 
    btn2.setText("Find"); 

     btn2.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
        Intent Message1=new Intent(); 
       Message1.setAction("map"); 
       sendBroadcast(Message1);} 

このエラーは、ブロードキャストのメソッドがoclicklistener内で定義されていないことを示しています。何故ですか?onCLickllistener内でブロードキャストの問題を送信しました。

+1

アクティビティ内で実行していますか? – Cristian

答えて

2

context.sendBroadcast(インテント)である必要があります。それはコンテキストのメソッドを実行することができない理由です何のコンテキストインスタンスが存在しないOnClickListenerの内には、CurrentActivity.this.sendBroadcast(意図) を行うことができます

1

sendBroadcastActivityBroadcastReceiver、またはServiceコンテキストの下で行うことができますが、あなたは、 onClicksendBroadcastにしようとしましたが、それは前述のコンテキストのいずれもありません。

一番簡単な方法は次のとおりです。

CurrentActivity.this.sendBroadcast(Message1); 

別のオプションは、onCreateに、変数Context contextクラスを作成することですが(それが活動またはサービスの場合)、context = thisを入れ、その後、context.sendBroadcast(Message1);を行います。または、BroadcastReceiverの場合はcontext.sendBroadcast(Message);

2

匿名クラスとしてOnClickListenerを作成しました。この匿名インスタンス内でsendBroadcast()を呼び出しようとしていますが、コンパイラはOnClickListenerにそのようなメソッドを見つけようとしていますが、そのようなメソッドはありません。あなたが必要とするのは、包含するクラス、つまりActivityを参照することです。ThisActivity.this.sendBroadcast(intent)を実行します。ここでThisActivityはActivityの実際の名前です。

関連する問題