пытаясь передать целое число в другой класс - PullRequest
0 голосов
/ 17 июля 2011

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

Класс, который устанавливает целое число, имеет следующее:

Мой помощник

    public int getHoles() {
    return setHoles;
}

Моя кнопка

case R.id.buttonSetHoles:
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        final CharSequence[] items = {"18", "9"};
        builder.setTitle("Set Holes");
        builder.setItems(items, new DialogInterface.OnClickListener(){
            public void onClick(DialogInterface dialogInterface, int item) {
                Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show();
                if (items[item] == "9"){
                    int setHoles = 9;
                }
                else if (items[item] == "18"){
                    int setHoles = 18;
                }
                return;
            }
        });
        builder.create().show();
        return;

Класс, которому нужны данные

        public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    String name1 = EasyPar.helper.getNames(); <--- works fine for this one
    int setHoles = EasyPar.helper.getHoles();
}

Всякий раз, когда я пытаюсь использовать значение, оно просто ничего не дает.Если я пытаюсь:

textHoleNumber.setText(String.valueOf(setHoles));

, он просто отображает 0

, единственный способ, которым я могу заставить его работать, - это если я просто установлю значение заранее как setHoles = 18;или около того.

Я пытался переместить «помощника» в конец класса, но это не сработало.Я думаю, что Моя кнопка неправильно устанавливает значение setHoles или Я неправильно передаю значение за пределами "case R.id.Я могу предоставить, пожалуйста, дайте мне знать!

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 17 июля 2011

Ваша проблема, кажется, проблема с областью видимости:

            if (items[item] == "9"){
                int setHoles = 9;
            }
            else if (items[item] == "18"){
                int setHoles = 18;
            }

Вы объявляете новые целые числа "setHoles" здесь, и они существуют только для одной строки. Любая другая переменная с именем "setHoles" из другого места в вашем коде скрыта этими новыми. (Ваш компилятор также должен предупреждать вас об этом.)

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

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

Проблема может заключаться в том, что int является примитивом, а String является объектом.Попробуйте использовать класс-оболочку Integer, чтобы передать значение и посмотреть, что произойдет.

вот так

int q = 35;
Integer i = new Integer(q);

Затем передайте значение i, используя ваш метод.Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...