2011-10-23 6 views
0

I活性を開始しようとしたが、それは私にエラーメッセージを与える:方法startActivity(インテント)がタイプ新しいView.onClickListener(のための未定義である)ここで{}ボタンactionlistenerからアクティビティを開始できませんか?

iがでstartActivityを使用するコードであります

 place.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      // TODO If placeButton was clicked: 
      Intent placepin = new Intent("my.locations.oskar.mendel.PLACEPINACTIVITY"); 
      startActivity(placepin); 
     } 
    }); 

答えて

4

OnClickListenerは、アクティビティクラス内のオブジェクトです。 onClickコードブロック内で、アクティビティの継承されたメソッドはOnClickListenerオブジェクトには表示されません。したがって、それに応じてスコープを調整する必要があります。あなたはおそらくこのようなものが欲しいでしょう:

 place.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      // TODO If placeButton was clicked: 
      Intent placepin = new Intent("my.locations.oskar.mendel.PLACEPINACTIVITY"); 
      ActivityClassName.this.startActivity(placepin); 
     } 
+0

ActivityClassName.this.startActivity(placepin);このonClickリスナーがアクティビティクラスの内部にない場合は、これも有効なコードですか? – Rakso

+1

この時点でどこにonClickListenerを配置したかわからないので、コードをさらに投稿する必要があります。現在のアクティビティとは異なるクラスからClickListenersを操作しようとしたためにスコープの問題が発生した場合は、アクティビティのコンテキストのコピーがクラスに渡されていることを確認する必要があります。 'context.startActivity(placepin);を使うことができるはずです。クラスの継承とスコープに関するいくつかの記事を読むことをお勧めします。 Java Swingに関する本は、おそらくAndroidの書籍よりも、これらのことが一般的なやり方のより良い概観を与えるでしょう。 – blackbourna

0

この問題を解決する私の方法はブール値を使用しています。

boolean start = false; 

. 
. 
. 
buttonListener{ 
    .... 
    start = true; 
    ... 
    displayFriend(start); 
} 

public void displayFriend(boolean start){ 
    Intent intent = new Intent(this, xxActivity.class); 
    startActvity(intent); 
} 

うまくいけば助けてください。

関連する問題