Button Listener not get registered on first click In android

匿名 (未验证) 提交于 2019-12-03 02:33:02

问题:

As i am new to android here i got the problem for button listeners I am using OnClickListener for busttons but it doesnot performs after first click once i click more than one it performs well but how to make it possible on first click it self here is my code:

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);         }     }); }

回答1:

Why do you need annonymous inner class when you have

 btnOENew.setOnClickListener(this);

and your class implements OnClickListener

All you need is switch case in 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       } }


回答2:

You are registering the listeners for the button two times..After first click on the button you again registering button with original listener..Remove all the button onClick methods and change your code like this..

// 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);     } }


回答3:

**

try this

**

 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);     } });    }


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!