按钮侦听器未在首次单击时注册在Android中

时间:2013-12-24 05:27:01

标签: android button onclicklistener

由于我是android的新手,我遇到了按钮监听器的问题 我正在使用OnClickListener for busttons但是在第一次点击后不会执行一旦我点击多个它表现良好但是如何使它成为可能首次点击它自己 这是我的代码:

public class DashbordActivity extends Activity implements OnClickListener{

ImageButton btnLogout, btnSearch, btnOENew, btnAENew,btnSync;
// Session Manager Class
SessionManager session = null;

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

    // Session Manager
    session = new SessionManager(getApplicationContext());

    /* Action Bar Color change on create*/
    ColorDrawable colorDrawable = new ColorDrawable(Color.parseColor("#FF7F24"));
    ActionBar actionBar = getActionBar();
    actionBar.setBackgroundDrawable(colorDrawable);

    /* get Resources from Xml  file */
    btnOENew = (ImageButton) findViewById(R.id.btnOENew);
    btnAENew = (ImageButton) findViewById(R.id.btnAENew);
    btnSearch = (ImageButton) findViewById(R.id.btnSearch);     
    btnLogout = (ImageButton) findViewById(R.id.btnLogout);
    btnSync = (ImageButton)findViewById(R.id.btnSync);

    addButtonListener();// on click any button
}
    // on click any button
private void addButtonListener() {
    // Find our button and hook-up the click routine
    btnOENew.setOnClickListener(this);
    btnSearch.setOnClickListener(this);     
    btnAENew.setOnClickListener(this);
    btnLogout.setOnClickListener(this);
    btnSync.setOnClickListener(this);
}

// on click any button
@Override
public void onClick(View v) {
    btnOENew.setOnClickListener(new OnClickListener() {         
        public void onClick(View v) {
            Intent intent = new Intent(getBaseContext(),           OceanSalesActivity.class);
            startActivity(intent);
        }
    });

    btnAENew.setOnClickListener(new OnClickListener() {         
        public void onClick(View v) {
            Intent intent = new Intent(getBaseContext(), AirSalesActivity.class);
            startActivity(intent);
        }
    });

    btnSearch.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(getBaseContext(), SearchActivity.class);
            startActivity(intent);
        }
    });


    btnLogout.setOnClickListener(new OnClickListener() {            
        public void onClick(View v) {               
            onLogout();
        }
    });

    btnSync.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent( getBaseContext() , SyncActivity.class);                                                
            startActivity(intent);
        }
    });
}

3 个答案:

答案 0 :(得分:8)

为什么在有

时需要匿名内部类
 btnOENew.setOnClickListener(this);

您的班级实施OnClickListener

您只需在onClick

中切换案例
@Override
public void onClick(View v) {

    switch(v.getId())
     {
       case R.id.btnOENew :
           // button btnOENew clicked
       break;
       case R.id.btnAENew :
            // button btnAENew clicked  
       break;
       ... // similar for other buttons
      }
}

答案 1 :(得分:1)

您正在为按钮注册两次监听器。首次单击按钮后,您再次使用原始侦听器注册按钮。删除所有按钮onClick方法并更改您的代码,如此...

// on click any button
@Override
public void onClick(View v) {
    if (v.getId() == R.id.btnOENew) {
        Intent intent = new Intent(getBaseContext(),
                OceanSalesActivity.class);
        startActivity(intent);
    } else if (v.getId() == R.id.btnAENew) {
        Intent intent = new Intent(getBaseContext(), AirSalesActivity.class);
        startActivity(intent);
    } else if (v.getId() == R.id.btnSearch) {
        Intent intent = new Intent(getBaseContext(), SearchActivity.class);
        startActivity(intent);
    } else if (v.getId() == R.id.btnLogout) {
        onLogout();
    } else if (v.getId() == R.id.btnSync) {
        Intent intent = new Intent(getBaseContext(), SyncActivity.class);
        startActivity(intent);
    }
}

答案 2 :(得分:1)

**

  

试试这个

**

 public class DashbordActivity extends Activity {

ImageButton btnLogout, btnSearch, btnOENew, btnAENew,btnSync;
// Session Manager Class
SessionManager session = null;

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

// Session Manager
session = new SessionManager(getApplicationContext());

/* Action Bar Color change on create*/
ColorDrawable colorDrawable = new ColorDrawable(Color.parseColor("#FF7F24"));
ActionBar actionBar = getActionBar();
actionBar.setBackgroundDrawable(colorDrawable);

/* get Resources from Xml  file */
btnOENew = (ImageButton) findViewById(R.id.btnOENew);
btnAENew = (ImageButton) findViewById(R.id.btnAENew);
btnSearch = (ImageButton) findViewById(R.id.btnSearch);     
btnLogout = (ImageButton) findViewById(R.id.btnLogout);
btnSync = (ImageButton)findViewById(R.id.btnSync);
 btnOENew.setOnClickListener(new OnClickListener() {         
    public void onClick(View v) {
        Intent intent = new Intent(getBaseContext(),           OceanSalesActivity.class);
        startActivity(intent);
    }
});

btnAENew.setOnClickListener(new OnClickListener() {         
    public void onClick(View v) {
        Intent intent = new Intent(getBaseContext(), AirSalesActivity.class);
        startActivity(intent);
    }
});

btnSearch.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent intent = new Intent(getBaseContext(), SearchActivity.class);
        startActivity(intent);
    }
});


btnLogout.setOnClickListener(new OnClickListener() {            
    public void onClick(View v) {               
        onLogout();
    }
});

btnSync.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent intent = new Intent( getBaseContext() , SyncActivity.class);                                                
        startActivity(intent);
    }
});



}
相关问题