0

我正在开发一个 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);
             }     
      }; 
}

错误有两点。首先是它说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);(错误是 -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

好吧,我可以立即看到几个错误。使其更清晰,因为仅通过查看代码和学习显然并不清楚。我在每个新的 Intent 语句中添加了 Safaricom.this。这是因为 Intent 构造函数需要一个 Context 作为第一个参数,而 OnClickListener 不是一个 Context,您需要获取作为上下文的封闭 Activity。另一个编辑,我错过了,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 回答
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

如果这不能消除第二个错误,请让我们知道是否出现了不同的问题。

于 2012-09-04T15:58:32.630 回答