2014-02-01 2 views
0

enter image description hereAndroid - Тема ошибки и кнопка еще интерактивными

ПРОЧТИТЕ ЭТО: Я хочу, чтобы это нравится .... если пользователь имеет имя входа и выбрать типы игры. пользователь может нажать кнопку «ОК». если пользователь не вводит имя и не выбирает типы игр, он не может нажать кнопку «ОК».

Я создаю поток для решения этой проблемы ... Но когда я запускаю это приложение. Я не могу пойти на этот UI снова ..

Что-то не так в методе 'autoValidation'

И код userConfigOK.setClickable (ложь); не работает. Не знаю почему ..

кстати, андроид жесткий. , , ,

Это исходный код:

public class UserConfig extends Activity { 
private String gameType; 
private String gameTime; 
private String playerName; 
private int IDChar = 0; 
Thread validation; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.user_config); 
    userConfigOK.setClickable(false); 
    inputName(); 
    chooseCharacter(); 
    setGameType(); 
    back(); 
    autoValidation(); 
    OK(); 
} 

public void inputName() { 
    playerName = userNameTextbox.getText().toString(); 
} 

public void setGameType() { 
    gameTypes.setOnItemSelectedListener(new OnItemSelectedListener() { 

     @Override 
     public void onItemSelected(AdapterView<?> adapterView, View arg1, 
       int arg2, long arg3) { 

      gameType = (String) gameTypes.getSelectedItem(); 
     } 

     @Override 
     public void onNothingSelected(AdapterView<?> arg0) { 

     } 
    }); 

} 

public void OK() { 
    userConfigOK.setOnClickListener(new OnClickListener() { 
     @SuppressWarnings("deprecation") 
     @Override 
     public void onClick(View arg0) { 
      // TODO Auto-generated method stub 
      Intent intent = new Intent(UserConfig.this, EnemyConfig1.class); 
      startActivity(intent); 
      validation.stop(); 
     } 
    }); 
} 

public void autoValidation() { 

    validation = new Thread(new Runnable() { 
     @Override 
     public void run() { 

      if((!gameType.trim().equals("")) && (!playerName.trim().equals("")) ) 
      { 
       userConfigOK.setClickable(true); 
      } 

      try { 
       Thread.sleep(100); 
      } catch (InterruptedException e) { 
       e.printStackTrace(); 
      } 

     } 
    }); 
    validation.start(); 

} 

}

+1

Вместо проверки резьбы, установите изменения текста lisener в полях ввода. –

+0

Я не понимаю. Я андроид новичок – AndikaK

ответ

2

Попробуйте

userConfigOK.setEnabled(false); 

Вместо

userConfigOK.setClickable(false); 
+0

Вы не можете изменить интерфейс пользователя, а не поток пользовательского интерфейса, обратите внимание на это. –

1

Вы только могли бы иметь onClickListener проверить, есть ли какой-либо текст, введенный, и если есть элемент, выбранный из сетки. Если пользователь ничего не выбрал, вы можете сделать Toast, который предложит пользователю ввести необходимые значения.

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