0

オン クリック リスナーを使用して 2 つのアクティビティを起動する Android アプリに取り組んでいます。コード内のすべてが正常にチェックアウトされますが、public void onClick(View v)その行から複数​​のエラーが発生し、コードを実行できません。私はこれにかなり慣れていないので、助けていただければ幸いです。私のコードは次のとおりです

public class Safaricom extends Activity {

      @Override
      public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.safaricom);

          Button button1 = (Button)findViewById(R.id.button1);
          Button button2 = (Button)findViewById(R.id.button2);

          button1.setOnClickListener(buttonClickListener);
          button2.setOnClickListener(buttonClickListener);
      }

      private OnClickListener buttonClickListener = new View.OnClickListener() {

           @Override
             public void onClick(View v) {
                  Intent intent = null;
                  switch(v.getId()){
                  case R.id.button1: 
                       intent = new Intent(this, Second.class);
                       break;
                  case R.id.button2:
                       intent = new Intent(this, SignUp.class);
                       break;
                  }
                  if (intent != null)
                      this.startActivity(intent);
             }     
      }; 
}

エラーは 2 つのポイントにあります。最初にそれが言うところpublic void on click view(エラーは - Multiple Markers at this line - implements android.view.View.OnClickListener.onClick- The method onClick(View) of type new View.OnClickListener(){} must override a superclass

それが言うところthis.startActivity(intent);の2番目(エラーは -T ですhe method startActivity(Intent) is undefined for the type new View.OnClickListener(){}

4

3 に答える 3

1

this使用する代わりにv.getContext()またはYOUR_ACTIVITY.this

Intent実際、ドキュメントを注意深く読むと、パラメータに含まれていることがわかります。Activityそのため、使用しthisている場合は、タイプのパラメータを指定していることを意味します。new View.OnClickListener

于 2012-09-04T15:48:44.877 に答える
0

最初のエラーの場合

The Error is - Multiple Markers at this line - implements android.view.View.OnClickListener.onClick- The method onClick(View) of type new View.OnClickListener(){} must override a superclass )

@override を削除してみてください

それでも 2 番目のエラーが解消されない場合は、別の問題が発生しているかどうかをお知らせください。

于 2012-09-04T15:58:32.630 に答える
0

まあ、私はいくつかのエラーをすぐに見ることができます。コードを見て学習するだけでは明らかにわからなかったので、より明確にするため。新しい Intent ステートメントのそれぞれに Safaricom.this を追加しました。これは、インテント コンストラクターが最初の引数としてコンテキストを必要とし、OnClickListener がコンテキストではないためです。コンテキストである外側のアクティビティを取得する必要があります。もう 1 つの編集を見逃していましたが、startActivity にも Safaricom を追加する必要があります。

public class Safaricom extends Activity {

  @Override
  public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.safaricom);

      Button button1 = (Button)findViewById(R.id.button1);
      Button button2 = (Button)findViewById(R.id.button2);

      button1.setOnClickListener(buttonClickListener);
      button2.setOnClickListener(buttonClickListener);
  }

  private OnClickListener buttonClickListener = new View.OnClickListener() {

       @Override
         public void onClick(View v) {
              Intent intent = null;
              switch(v.getId()){
              case R.id.button1: 
                   intent = new Intent(Safaricom.this, Second.class);
                   break;
              case R.id.button2:
                   intent = new Intent(Safaricom.this, SignUp.class);
                   break;
              }
              if (intent != null)
                  Safaricom.this.startActivity(intent);
         }     
     };
 }
于 2012-09-04T15:47:29.690 に答える