使用onClickListener双重标准?

时间:2015-01-20 04:01:41

标签: java android onclick

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

    Button buttonForExternalComponent = (Button)findViewById(R.id.externalComponent);

    buttonForExternalComponent.setOnClickListener(new View.OnClickListener(){
        public void onClick(View v){
            Intent intent2 = new Intent();
            intent2.setAction(Intent.ACTION_MAIN);
            intent2.addCategory(Intent.CATEGORY_APP_CALCULATOR);
            startActivity(intent2);
        }
    });

}

public void onClick(View v){
     startActivity(new Intent(this, A2Activity.class));
}

嗨,我是Android新手。我试图在我的示例代码中添加2个按钮并遇到问题......

嗯,上面的代码有效。我有两个按钮,可以进行2种不同的活动。一个用于此包中的另一个类,另一个用于另一个组件。

但是,当我尝试将两个按钮插入onCreate部分时,externalComponent可以工作,但对于包内的类不起作用。

startActivity(new Intent(this,A2Activity.class));抛出一个无法解析构造函数的错误

    buttonForA2.setOnClickListener(new View.OnClickListener(){
        public void onClick(View v){
            Intent intent1 = new Intent(this, A2Activity.class);
            startActivity(intent1);
        } 
    });

此代码不起作用。

我的问题是,内部活动是否有另一个监听器功能?我很困惑为什么同样的方法对同一个函数不起作用。

提前谢谢。

1 个答案:

答案 0 :(得分:0)

正如Chris Stratton指出的那样,this中的onClickListener并未指向活动。要修复,您可以使用:

    final Activity act = this;
    buttonForA2.setOnClickListener(new View.OnClickListener(){
        public void onClick(View v){
            Intent intent1 = new Intent(act, A2Activity.class);
            startActivity(intent1);
        } 
    });