Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
PAnT0P
1024 / 548 / 106
Регистрация: 26.03.2012
Сообщений: 987
1

Объединение строк

20.11.2014, 15:17. Просмотров 784. Ответов 6
Метки нет (Все метки)

3 день как начал изучать программирование под андроид. Скачал книжку Брайн Харди, Билл Филлипс - Программирование под Android. Смотрю примеры выполняю предлагаемые задания для самостоятельного выполнения.
На одном из таких занятий застопорился: не могу объединить строку с числом, при запуске в место текста "API level" выводится число 2131361808.
Подскажите, что я делаю не так?

Содержимое onCreate в QuizActivity.java
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
    @TargetApi(11)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.d(TAG, "onCreate() called");
        setContentView(R.layout.activity_quiz);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
            ActionBar actionBar = getActionBar();
            actionBar.setSubtitle(R.string.app_name);
        }
        mApiTextView = (TextView)findViewById(R.id.api_text_view);
        mApiTextView.setText(R.string.api_version + " " + Build.VERSION.SDK_INT); // Вот здесь какой то косяк
 
        mQuestionTextView = (TextView)findViewById(R.id.question_text_view);
        int question = mQuestionBank[mCurrentIndex].getQuestion();
        mQuestionTextView.setText(question);
        mQuestionTextView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mCurrentIndex = (mCurrentIndex + 1) % mQuestionBank.length;
            }
        });
 
        mTrueButton = (Button)findViewById(R.id.true_button);
        mTrueButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                checkAnswer(true);
            }
        });
 
        mFalseButton = (Button)findViewById(R.id.false_button);
        mFalseButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                checkAnswer(false);
            }
        });
 
        mNextButton = (ImageButton)findViewById(R.id.next_button);
        mNextButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mCurrentIndex = (mCurrentIndex + 1) % mQuestionBank.length;
                updateQuestion();
            }
        });
 
        mPrevButton = (ImageButton)findViewById(R.id.prev_button);
        mPrevButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mCurrentIndex = (mCurrentIndex - 1);
                if (mCurrentIndex < 0){
                    mCurrentIndex= mQuestionBank.length-1;
                }
                updateQuestion();
            }
        });
 
        if (savedInstanceState != null) {
            mCurrentIndex = savedInstanceState.getInt(KEY_INDEX, 0);
                   }
 
        mCheatButton = (Button)findViewById(R.id.cheat_button);
        mCheatButton.setOnClickListener(new View.OnClickListener() {
 
            @Override
            public void onClick(View v) {
                Intent i = new Intent(QuizActivity.this, CheatActivity.class);
                boolean answerIsTrue = mQuestionBank[mCurrentIndex].isTrueQuestion();
                i.putExtra(CheatActivity.EXTRA_ANSWER_IS_TRUE, answerIsTrue);
                startActivityForResult(i, 0);
            }
        });
 
        updateQuestion();
    }
Содержимое activity_quiz.xml
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/FrameLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    <TextView
        android:id="@+id/question_text_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="24dp" />
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:orientation="vertical" >
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:orientation="horizontal" >
            <Button
                android:id="@+id/true_button"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/true_button" />
            <Button
                android:id="@+id/false_button"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
            android:text="@string/false_button" />
        </LinearLayout>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text=""
            android:layout_gravity="center"
            android:id="@+id/api_text_view"
            android:padding="24dp" />
    </LinearLayout>
    <ImageButton
        android:id="@+id/prev_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/arrow_left"
        android:layout_gravity="bottom|left"
        android:contentDescription="previous" />
    <Button
        android:id="@+id/cheat_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|center"
        android:text="@string/cheat_button" />
    <ImageButton
        android:id="@+id/next_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/arrow_right"
        android:layout_gravity="bottom|right"
        android:contentDescription="next" />
</FrameLayout>
Содержимое strings.xml
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name" translatable="false">GeoQuiz</string>
    <string name="title_activity_quiz" translatable="false">GeoQuiz</string>
    <string name="action_settings" translatable="false">(-_-)</string>
    <string name="title_activity_cheat" translatable="false">CheatActivity</string>
    <string name="api_version" translatable="false">API level</string>
    <string name="next_button">Next</string>
    <string name="prev_button">Prev</string>
    <string name="true_button">True</string>
    <string name="false_button">False</string>
    <string name="correct_toast">Correct!</string>
    <string name="incorrect_toast">Incorrect!</string>
    <string name="menu_settings">Settings</string>
    <string name="question_oceans">The Pacific Ocean is larger than the Atlantic Ocean.</string>
    <string name="question_mideast">The Suez Canal connects the Red Sea and the Indian Ocean.</string>
    <string name="question_africa">The source of the Nile River is in Egypt.</string>
    <string name="question_americas">The Amazon River is the longest river in the Americas.</string>
    <string name="question_asia">Lake Baikal is the world\'s oldest and deepest freshwater lake.</string>
    <string name="warning_text_view">Are you sure you want to do this?</string>
    <string name="show_answer_button">Show Answer</string>
    <string name="judgment_toast">Cheating is wrong.</string>
    <string name="cheat_button">Cheat!</string>
</resources>
0
Миниатюры
Объединение строк  
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.11.2014, 15:17
Ответы с готовыми решениями:

Объединение массивов
Всем добра. Нужна помощь в объявлении нового массива из двух других. int p1...

Приложение обои-объединение
Здравствуйте, подскажите пожалуйста: По урокам сделал 2 приложения: 1....

Объединение ячеек GridLayout
Подскажите, пожалуйста, как программно объединить две соседние ячейки в...

Объединение нескольких звуковых файлов
Всем добра. Каким образом может осуществить объединение выбранных аудифайлов в...

Объединение видео Android Studio
как объединить 2 видео в одно. нагуглил про ffmpeg, но это серьезный и сложный...

6
YuraAAA
1578 / 1319 / 282
Регистрация: 25.10.2009
Сообщений: 3,436
Записей в блоге: 2
20.11.2014, 15:47 2
Лучший ответ Сообщение было отмечено PAnT0P как решение

Решение

Цитата Сообщение от PAnT0P Посмотреть сообщение
R.string.api_version
это int
вместо этого надо getString(R.string.api_version)

т.е.
Java
1
mApiTextView.setText(getString(R.string.api_version) + " " + Build.VERSION.SDK_INT);
1
PAnT0P
1024 / 548 / 106
Регистрация: 26.03.2012
Сообщений: 987
20.11.2014, 16:08  [ТС] 3
Цитата Сообщение от YuraAAA Посмотреть сообщение
вместо этого надо getString(R.string.api_version)
Точно, так работает, но тогда странно почему
Javascript
1
mApiTextView.setText(R.string.api_version)
выводит не число а правильную строку "API level"?
0
Spelcrawler
531 / 501 / 113
Регистрация: 12.03.2014
Сообщений: 1,666
Завершенные тесты: 1
20.11.2014, 16:34 4
Цитата Сообщение от PAnT0P Посмотреть сообщение
но тогда странно почему
Java
1
mApiTextView.setText(R.string.api_version)
выводит не число а правильную строку "API level"?
Потому что один метод setText() принимает строку, а другой ид ресурса со строкой (int). Когда вы складываете строку с числом, число автоматом переводится в строку и в метод уходит строка, но если вы складываете ид(int) и другое число (int) то и в метод уходит сумма этих 2х интов, а т.к. под этим ид нет ресурса - просто выводит число.
1
PAnT0P
1024 / 548 / 106
Регистрация: 26.03.2012
Сообщений: 987
20.11.2014, 16:39  [ТС] 5
Все таки хочу добить этот вопрос, для более глубокого понимания.
Почему тогда это выводит число?
Javascript
1
mApiTextView.setText(R.string.api_version + " ")
Ведь тут складывается число и строка (пробел)
0
YuraAAA
1578 / 1319 / 282
Регистрация: 25.10.2009
Сообщений: 3,436
Записей в блоге: 2
20.11.2014, 16:57 6
PAnT0P, это java.
setText - перегруженный метод.
Один из них принимает int, т.е. номер ресурса в xml файле.
Например,
Java
1
setText(R.string.api_version);
Второй принимает String.
И когда Вы делаете int + String, например, 1 + "abs", то получаете СТРОКУ, вида "1abs".
И как раз вызывается другой метод setText.
1
PAnT0P
1024 / 548 / 106
Регистрация: 26.03.2012
Сообщений: 987
20.11.2014, 19:29  [ТС] 7
Теперь все понятно. Спасибо за разъяснение.
0
20.11.2014, 19:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.11.2014, 19:29

Объединение строк С++
Заданы две строки. Построить новую строку, состоящую из символов, которые...

Объединение строк
Добрый вечер. Хотелось бы узнать как в делфи можно объединить выделенные...

Объединение строк
Подскажите функцию похожую по своему назначению на strcat() в c++; Мне нужно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru