【问题标题】:Errors in Activity code in EclipseEclipse 中的活动代码错误
【发布时间】:2014-03-23 08:51:31
【问题描述】:

我是编程新手,我不明白为什么每个public void onClick(View v) { " and warning on "(new OnClickListener); 都有错误

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    //mana lapu parslegshnas
    Button matematikaslapa = (Button) findViewById(R.id.poga1);
    matematikaslapa.setOnClickListener(new OnClickListener);

    @Override
    public void onClick(View v) {
        Intent myIntent = new Intent(v.getContext(), matematikaslapa.class);
        v.getContext().startActivity(myIntent);
    }

    Button fizikaslapa = (Button) findViewById(R.id.poga2);
    fizikaslapa.setOnClickListener(new OnClickListener);

    @Override
    public void onClick(View v) {
        Intent myIntent = new Intent(v.getContext(), fizikaslapa.class);
        v.getContext().startActivity(myIntent);
    }

    Button kimijaslapa = (Button) findViewById(R.id.poga3);
    kimijaslapa.setOnClickListener(new OnClickListener);

    @Override
    public void onClick(View v) {
        Intent myIntent = new Intent(v.getContext(), kimijaslapa.class);
        v.getContext().startActivity(myIntent);
    }
    //beigas

    if (savedInstanceState == null) {
        getSupportFragmentManager().beginTransaction()
                .add(R.id.container, new PlaceholderFragment())
                .commit();
    }
}

【问题讨论】:

  • 用“this”替换所有“new OnClickListener”。但是,我建议您在开始编码之前先阅读一下。

标签: android eclipse android-activity


【解决方案1】:

你不能在方法中声明方法。

像这样改变结构

fizikaslapa.setOnClickListener(new OnClickListener);

@Override
public void onClick(View v) {
    Intent myIntent = new Intent(v.getContext(), fizikaslapa.class);
    v.getContext().startActivity(myIntent);
}

这样的事情

fizikaslapa.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent myIntent = new Intent(v.getContext(), fizikaslapa.class);
        v.getContext().startActivity(myIntent);
    }
});

现在您正在创建一个 OnClickListener 匿名内部类实例并在该类中声明 onClick() 方法。

【讨论】:

    【解决方案2】:

    改变这个

     matematikaslapa.setOnClickListener(new OnClickListener);
     @Override
     public void onClick(View v) {
        Intent myIntent = new Intent(v.getContext(), matematikaslapa.class);
        v.getContext().startActivity(myIntent);
     }
    

    matematikaslapa.setOnClickListener(new OnClickListener()
    {
    
    @Override
    public void onClick(View v) {
        Intent myIntent = new Intent(v.getContext(), matematikaslapa.class);
        v.getContext().startActivity(myIntent);
    }
    });
    

    对于其他OnClickListener's 也是如此。您正在使用匿名内部类,并且正在实现接口OnClickListener

    让你的 Activity 类实现OnClickListener

     matematikaslapa.setOnClickListener(this);
     fizikaslapa.setOnClickListener(this);
     ..// similarly for others 
    

    然后

    public void onClick(View v)
    {
        switch(v.getId())
        {
          case R.id.poga1 :
                    Intent myIntent = new Intent(v.getContext(), matematikaslapa.class);
                    v.getContext().startActivity(myIntent);
          break; 
    
          case R.id.poga2 :
                    Intent myIntent = new Intent(v.getContext(), fizikaslapa.class);
                    v.getContext().startActivity(myIntent);
          break; 
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2013-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-29
      • 2012-10-11
      • 2016-10-10
      • 1970-01-01
      相关资源
      最近更新 更多