2013-06-07 2 views
0

У меня есть 16 кнопок в моей игровой деятельности. Плюс 4 (я расскажу о них позже), все 4 инвалида на данный момент. Теперь, всякий раз, когда пользователь нажимает одну из этих 16 кнопок, я устанавливаю для нее некоторый текст, а затем отключает его, поэтому его нельзя использовать снова. Есть ли способ, когда все 16 кнопок нажаты и отключены, чтобы включить все эти 4 кнопки?Как включить некоторые кнопки, когда все остальные отключены?

+0

Вы могли бы, конечно, проверять состояние каждый раз, когда один из эти 16 кнопок отключены одним вызовом функции. Этот вызов функции может проверить функцию включения каждой из ваших кнопок. –

+0

То, что вы описываете, является универсальным конечным автоматом, поэтому да - есть способ реализовать это на любом компьютере. Что вы используете для разработки этой игры, какой код вы пробовали? – John

+0

@John Я ничего не пробовал, потому что не знал, как подойти к этой проблеме. – marjanbaz

ответ

2

Вот быстрый способ сделать это:

public class example{ 
    int activeButtons = 16; 

    public void onCreate(Bundle savedInstanceState){ 
     //initialize 
    } 

    /** 
    * This is your onClick method 
    */ 
    public void click(View v){ 
     v.setEnabled(false); 
     activeButtons--; 
     if(activeButtons == 0){ 
      enable(); 
     } 
    } 

    /** 
    * This will enable your four buttons 
    */ 
    public void enable(){ 
     //Get references to your buttons here 
     Button b1 = ...; 
     Button b2 = ...; 
     Button b3 = ...; 
     Button b4 = ...; 

     b1.setEnabled(true); 
     b2.setEnabled(true); 
     b3.setEnabled(true); 
     b4.setEnabled(true); 
    } 
} 
+0

Очень хорошая идея, я попробую это и дам вам знать. – marjanbaz

+0

Имейте в виду, что есть много других способов реализовать это, и лучший ответ может зависеть от человека. Вот как я это сделаю, но убедитесь, что вы выбрали наиболее легкое для вас решение. Дайте мне знать, если вам нужны какие-либо разъяснения или дополнительные решения. – JorganPubshire

+0

Работал нормально. Благодарю. – marjanbaz

0

Примером одного из способов добиться того, что вы просите, является просто отложить такой случай в вашем коде; если я понимаю, что ваш вопрос в отношении того, что было выложено выше:

Button buttonOne = null; 
//...fourteen buttons 
Button otherButtonOne = null; 
//...other four buttons 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setupButtons(); 
} 

private void setupButtons() 
{ 
    buttonOne.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      //..Whatever else you do with button. 
      if(allButtonsAreDisabled()) 
      { 
       enableOtherFourButtons(); 
      } 
     } 
    }); 
    //... 
} 

private boolean allButtonsAreDisabled() 
{ 
    if(!buttonOne.isEnabled()) // && !buttonTwo.isEnabled() && ... 
    { 
     return true; 
    } 
    else 
     return false; 
} 

private void enableOtherFourButtons() 
{ 
    otherButtonOne.setEnabled(true); 
    //... 
} 
+0

Я использую оператор switch вместо onClickListener. Если это помогает [здесь] (https://github.com/Nabukodonosor/spojnice/blob/master/Asocijacije.java), что полный класс на GitHub, просто посмотреть, как он выглядит. – marjanbaz

+0

В любом случае, это просто подход, чтобы получить идею, а не то, что вы должны использовать. –

+0

Я решил пойти с другим решением. Спасибо всем за все. – marjanbaz

Смежные вопросы