2

我是android的新手。单击第一个选项卡时,我有四个按钮。我希望用户先单击第一个按钮,而不是先随机单击其他按钮。所以需要禁用其他按钮,直到我的第一个按钮被点击,一旦第一个按钮被点击,当用户返回时,所有按钮都需要被启用。我该怎么做呢?请帮忙!!

@Override
public void onClick(View v) {
    // TODO Auto-generated method stub
    if(v.getId() == R.id.imgbtn_details)
    {
        attendees_imgbtn.setEnabled(true);
        resources_imgbtn.setEnabled(true);
        contacts_imgbtn.setEnabled(true);
        count = 1;
        Intent detail_intent=new Intent(getActivity().getApplicationContext(),DetailsActivity.class);
        detail_intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(detail_intent);
    }
    else if(v.getId() == R.id.imgbtn_attendees && count == 0)
    {

        if(count == 1)
        {
        Intent attendee_intent = new Intent(getActivity().getApplicationContext(),AttendeesActivity.class);
        attendee_intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(attendee_intent);
        }
        else
        {
            attendees_imgbtn.setEnabled(false);
            resources_imgbtn.setEnabled(false);
            contacts_imgbtn.setEnabled(false);
        }
    }
    else if(v.getId() == R.id.imgbtn_resources && count == 0)
    {

        if(count == 1)
        {
        Intent resources_intent = new Intent(getActivity().getApplicationContext(),ResourcesActivity.class);
        resources_intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(resources_intent);
        }
        else
        {
            attendees_imgbtn.setEnabled(false);
            resources_imgbtn.setEnabled(false);
            contacts_imgbtn.setEnabled(false);
        }
    }
    else if(v.getId() == R.id.imgbtn_contacts && count == 0)
    {

        if(count == 1)
        {
        Intent contact_intent = new Intent(getActivity().getApplicationContext(),ContactsActivity.class);
        contact_intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(contact_intent);
        }
        else
        {
            attendees_imgbtn.setEnabled(false);
            resources_imgbtn.setEnabled(false);
            contacts_imgbtn.setEnabled(false);
        }
    }
}
4

4 回答 4

1

用于setEnable(true)按钮启用和禁用按钮

于 2013-01-21T08:25:13.563 回答
0

定义一个静态布尔变量 wasClicked....如果单击了 but1,则使变量为 true,否则为 false...覆盖此方法....当用户返回时,它将首先检查而不是启用或禁用第一个但是否被单击。

    @Override
     protected void onResume() {
    // TODO Auto-generated method stub
     if(!wasClicked){
        but2.setClickable(false);       
        but3.setClickable(false);
        but4.setClickable(false);           
     }else{
        but2.setClickable(true);        
        but3.setClickable(true);
        but4.setClickable(true);            
     }

     }
于 2013-01-21T08:39:57.050 回答
0

试试这个代码:

Public static boolean enable_buttons = false;

  if(enable_buttons == false){   
    button2.setEnable(false);
    button3.setEnable(false);
    button4.setEnable(false);
  }else{
    button2.setEnable(true);
    button3.setEnable(true);
    button4.setEnable(true);
  }
button1.setOnClickListener(new OnClickListener() {           

  @Override
  public void onClick(View v) 
  {
      button2.setEnable(true);
      button3.setEnable(true);
      button4.setEnable(true);
      enable_buttons = true;
  }    
}
于 2013-01-21T08:28:15.263 回答
0

我认为您需要传递变量来指定是否要启用按钮。

第一次,将其传递为:

Intent intent = new Intent (this, NextAct.class);
intent.putExtra ("ENABLE", "No");

当您想要启用按钮时,将 String 作为 Yes 传递:

Intent intent = new Intent (this, NextAct.class);
intent.putExtra ("ENABLE", "YES");

然后在 NextAct 类中检查该字符串。

    Intent intent = getIntent();
    String enableBtn = intent.getStringExtra("ENABLE");
    if (enableBtn != null && enableBtn.equalsIgnoreCase("YES")) {
        button2.setEnabled(true);
        button3.setEnabled(true);
        button4.setEnabled(true);
    } else {
        button2.setEnabled(false);
        button3.setEnabled(false);
        button4.setEnabled(false);
    }

因此,您的按钮将仅在您需要时启用。

希望有帮助。

于 2013-01-21T08:48:43.820 回答