как использовать и редактировать ввод текста как int для переключателя - PullRequest
1 голос
/ 13 сентября 2011

Я хочу использовать пользовательский ввод из редактируемого текста, преобразовать его в целое число и использовать его в моем статусе переключателя

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.text.Editable;
import android.text.InputType;
import android.view.Display;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ToggleButton;

public class MainScreen extends Activity implements View.OnClickListener {
    Button convert;
    Button erase;
    EditText display;
    ToggleButton switcher;
    int input;



@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);


             pause.start();
    // Calls my variables
    InitializeVars();
}

// SLEEP 2 SECONDS HERE ...
Thread pause = new Thread() {
    public void run() {
        try {
            Thread.sleep(2000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

};

// My variables
private void InitializeVars() {
    // TODO Auto-generated method stub
    convert = (Button) findViewById(R.id.bConvert);
    erase = (Button) findViewById(R.id.bErase);
    display = (EditText) findViewById(R.id.etDisplay);
    display.setInputType(InputType.TYPE_CLASS_NUMBER);
    switcher = (ToggleButton) findViewById(R.id.tbSwitch);

    switcher.setOnClickListener(this);
    convert.setOnClickListener(this);
    erase.setOnClickListener(this);

}

// My functions for anything that is clickable embedded with a switch
// statement
public void onClick(View v) {
    // TODO Auto-generated method stub
    switch (v.getId()) {
    case R.id.tbSwitch:
        if (switcher.isChecked()) {
            display.setText("Text1");
        } else {
            display.setText("Text2");
        }
        break;
    case R.id.bErase:
        display.getText().clear();
        break;
    case R.id.bConvert:
        input = Integer.getInteger(display.getText().toString());
        input = (input / 10);
        switch (input) {
            case input = 10:
        }
        break;
    default:
        break;
    }
}

}

Так что после ввода это то, чтоэто выглядит так, и когда я пытаюсь использовать свой ввод в моем случае (для состояния переключателя), получается "выражения случая должны быть константными выражениями"

Ответы [ 2 ]

2 голосов
/ 13 сентября 2011

Ну, первое, что я заметил в этой строке, это то, что вы пытаетесь дать input, то есть int и Editable. display.getText() возвращает редактируемый объект. Я думаю, что вы на самом деле хотите, это

input = Integer.parseInt(display.getText().toString());

Так как parseInt () будет выдавать NumberFormatException , вы можете захотеть реализовать блок try / catch для перехвата любого ввода, не являющегося целым числом. Это сделает ваше приложение более надежным.

Что касается вашей темы. Вы не называете это нигде. Это хорошо, но везде, где вам это нужно, вы должны звонить pause.start(), хотя это действительно не нужно. Я согласен с президентом Злом в этом отношении.

0 голосов
/ 13 сентября 2011

display.getText() вернет String, а не int, как вы и объявили input.Вам нужно будет позвонить по номеру input = Integer.parseInt(display.getText().toString()) и обработать все исключения, которые могут возникнуть (я не помню, в верхней части головы).

Ваш код Thread правильный, но никогда не будет вызван.Вам было бы лучше просто позвонить Thread.sleep(2000) туда, где вам это нужно - его не нужно заключать в Thread (но вам все равно нужно поймать InterruptedException).Однако, если вы хотите оставить все как есть, вам нужно позвонить pause.start().

...