Попытка получить alerttdialog, чтобы изменить текстовое представление на основе выбранного варианта - PullRequest
0 голосов
/ 15 июля 2011

Я хочу, чтобы в диалоговом окне отображался правильный текст на основе выбранной опции (т. Е. Если нажата ДВА, я хочу показать текст «Вы нажали ДВЕ»)

при первом нажатии он вроде бы ничего не делает, текст идет в инициализированный при втором нажатии вы обнаружите, что текст был переключен на значение по умолчанию

Я новичок в Android, и я не думаю, что понимаю, что делает здесь деятельность. Может кто-нибудь, пожалуйста, помогите мне найти способ, который работает?

public class AndMainT extends Activity {
private GameLogicT myGame = new GameLogicT();

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Button b_com = (Button)findViewById(R.id.button);
    b_com.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            CharSequence[] pick_one = {"ONE", "TWO", "THREE"};
            call_menu(pick_one);
            updateAwesomeText();
        }
    });
}

public void updateAwesomeText(){
    TextView newText = (TextView)findViewById(R.id.text);
    newText.setText(myGame.getCurrent_opt().getDescription() + "\n");
}

public void call_menu(CharSequence[] items){
    final CharSequence[] f_items = items;

    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle("Orders Captain?");
    builder.setItems(f_items, new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int item) {
            myGame.startOpt(item);
        }
    });
    builder.show();
}
}


public class GameLogicT {
class GOpt{
    private CharSequence description = "this is the intialized text sadface";

    public CharSequence getDescription() {
        return description;
    }
    public void setDescription(CharSequence description) {
        this.description = description;
    }
}

private GOpt current_opt = new GOpt();

public void startOpt(int item){
    switch(item){
    case 1:
        current_opt.setDescription("you pressed ONE");
    case 2:
        current_opt.setDescription("you pressed TWO");
    case 3:
        current_opt.setDescription("you pressed THREE");
    default:
        current_opt.setDescription("I am a fart and think you have pressed nothing sadface");
    }
}

public GOpt getCurrent_opt() {
    return current_opt;
}
public void setCurrent_opt(GOpt current_opt) {
    this.current_opt = current_opt;
}
}

я тоже пробовал

   public void onClick(View v) {
        CharSequence[] pick_one = {"ONE", "TWO", "THREE"};
        call_menu(pick_one);
        try {
                wait();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        updateAwesomeText();
    }

    public void onClick(DialogInterface dialog, int item) {
        myGame.startOpt(item);
        notify();
    }

Это вызывает принудительное закрытие при нажатии кнопки, это не мой вопрос, просто сказать, что я пытался!

1 Ответ

0 голосов
/ 19 июля 2011

извините, но я не могу проверить ваш код из-за большой работы.Однако, посмотрев, я заметил следующее:

1) Я думаю, что позиция предметов начинается с индекса 0. 2) Возможно, вы потеряли немного break в выражении switch-case

Итак, попробуйте заменить его на:

public void startOpt(int item){
  switch(item){

    case 0:
       current_opt.setDescription("you pressed ONE");
    break;

    case 1:
      current_opt.setDescription("you pressed TWO");
    break;

    case 2:
      current_opt.setDescription("you pressed THREE");
    break;

    default:
      current_opt.setDescription("I am a fart and think you have pressed nothing sadface"); 
  } 
}

Надеюсь, это поможет вам!

...