Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Braumeister
0 / 0 / 0
Регистрация: 06.02.2015
Сообщений: 9
#1

Поменял порядок следования элементов в layout - приложение упало - Программирование Android

11.02.2015, 13:58. Просмотров 584. Ответов 11
Метки нет (Все метки)

Здравствуйте!
Имеется вот такой файл разметки:
Java
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
<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="match_parent">
 
        <ImageView
                android:id="@+id/collection_foto"
                android:layout_width="fill_parent"
                android:layout_height="300dp"
                android:scaleType="centerCrop"
                android:contentDescription="@string/description_image"/>
 
        <TextView
                android:id="@+id/collection_text"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"/>
 
        <TableLayout
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:stretchColumns="*"
                android:layout_marginTop="20dp">
            <TableRow>
                <Button
                        android:layout_width="fill_parent"
                        android:layout_height="wrap_content"
                        android:text="Каталог"
                        android:id="@+id/viewCatalogCollection"/>
                <Button
                        android:layout_width="fill_parent"
                        android:layout_height="wrap_content"
                        android:text="Контакты"
                        android:id="@+id/viewContactCollection" />
            </TableRow>
 
            <TableRow>
                <Button
                        android:layout_width="fill_parent"
                        android:layout_height="wrap_content"
                        android:text="Сайт"
                        android:id="@+id/goToSiteCollection" />
                <Button
                        android:layout_width="fill_parent"
                        android:layout_height="wrap_content"
                        android:text="Позвонить"
                        android:id="@+id/CallCollection" />
            </TableRow>
 
        </TableLayout>
 
</LinearLayout>
Приложение прекрасно работает. Но стоит только поставить TableLayout перед ImageView и приложение падает, ругаясь на этот код:
Java
1
coll_foto = (ImageView) findViewById(R.id.collection_foto);
Почему так? Разве порядок следования элементов разметки важен не только для визуального представления?
http://www.cyberforum.ru/android-dev/thread1951040.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.02.2015, 13:58
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Поменял порядок следования элементов в layout - приложение упало (Программирование Android):

Не хочет работать в layout, но включается в layout-land
доброе утро ! пишу первое приложение. обычный мейн.хмель выглядит вот так :...

At android.widget.LinearLayout.setChildFrame Layout в Layout-те
Нужен совет бывалых. У меня есть активити которое запускается с мейн активити,...

Программное создание layout и элементов
Здравствуйте. У меня появилась необходимость создать полноценный layout без...

Редактирование элементов layout из другого потока
Подскажите, как максимально просто редактировать элементы layout из другого...

Сдвиг элементов layout при добавлении нового элемента
Добрый вечер! Вопрос в следующем: как запретить layout'y сдвигать другие...

11
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,072
11.02.2015, 15:33 #2
Ну а в визуальном редакторе тоже ругается?
0
Braumeister
0 / 0 / 0
Регистрация: 06.02.2015
Сообщений: 9
11.02.2015, 15:40  [ТС] #3
нет, Intellij IDEA не ругается, ошибок при компиляции нет
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,072
11.02.2015, 15:42 #4
А если clear.
0
Braumeister
0 / 0 / 0
Регистрация: 06.02.2015
Сообщений: 9
11.02.2015, 15:46  [ТС] #5
да, это самый частый способ который мне встречался. Но никаких изменений не произошло. Еще я удалял R.class. Результата нет.
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,072
11.02.2015, 15:52 #6
А ошибка какая?
0
Braumeister
0 / 0 / 0
Регистрация: 06.02.2015
Сообщений: 9
11.02.2015, 15:59  [ТС] #7
я так понимаю что самое важное вот это:
Caused by: java.lang.ClassCastException: android.widget.Button
at ru.catalog_tile.porselanosa.ActivityCollection.onCreate(ActivityCollection.java:28)
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,072
11.02.2015, 16:07 #8
В 28-й строке вот это?
coll_foto = (ImageView) findViewById(R.id.collection_foto);

Добавлено через 29 секунд
Тогда почему button?
0
Braumeister
0 / 0 / 0
Регистрация: 06.02.2015
Сообщений: 9
11.02.2015, 16:19  [ТС] #9
да, в 28 строке это.

Добавлено через 6 минут
полностью код активити выглядит так:
Java
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
79
80
81
82
83
84
85
86
87
package ru.catalog_tile.porselanosa;
 
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import android.widget.ImageView;
import android.widget.Button;
 
public class ActivityCollection extends Activity implements View.OnClickListener {
 
    ImageView coll_foto;
    TextView coll_text;
 
    Button viewCatalogCollection;
    Button viewContactCollection;
    Button CallCollection;
    Button goToSiteCollection;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.all_collection);
 
        coll_text = (TextView) findViewById(R.id.collection_text);
        coll_foto = (ImageView) findViewById(R.id.collection_foto);
 
        Intent intent_data = getIntent();
 
        String fName = intent_data.getStringExtra("fname");
 
        String file_foto_name = "porcelanosa_" + fName + "_photo";
 
        String name_collection = capitalize (fName);
 
        int fotoName = getResources().getIdentifier(file_foto_name, "drawable", getPackageName());
 
        coll_foto.setImageResource(fotoName);
        coll_text.setText(name_collection);
 
        viewCatalogCollection = (Button) findViewById(R.id.viewCatalogCollection);
        viewCatalogCollection.setOnClickListener(this);
 
        viewContactCollection = (Button) findViewById(R.id.viewContactCollection);
        viewContactCollection.setOnClickListener(this);
 
        goToSiteCollection = (Button) findViewById(R.id.goToSiteCollection);
        goToSiteCollection.setOnClickListener(this);
 
        CallCollection = (Button) findViewById(R.id.CallCollection);
        CallCollection.setOnClickListener(this);
    }
 
    private String capitalize(String line)
    {
        return Character.toUpperCase(line.charAt(0)) + line.substring(1);
    }
 
    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.viewCatalogCollection:
                Intent intent_collection = new Intent(this, ru.catalog_tile.porselanosa.CatalogPage.class);
                startActivity(intent_collection);
                break;
            case R.id.viewContactCollection:
                Intent intent_contact = new Intent(this, ru.catalog_tile.porselanosa.ContactPage.class);
                startActivity(intent_contact);
                break;
            case R.id.CallCollection:
                Intent intent_call = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:+123456"));
                startActivity(intent_call);
                break;
            case R.id.goToSiteCollection:
                Uri address = Uri.parse("http://www.ru/");
                Intent goToSite_collection = new Intent(Intent.ACTION_VIEW, address);
                startActivity(goToSite_collection);
                break;
            default:
                break;
        }
    }
 
 
}
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,072
11.02.2015, 18:40 #10
Ну тут или баги андроида или еще что, может после перезагрузки заработает, ну или ищите методом тыка, напр. вместо ImageView поставьте другой вью и посмотрите.
0
Braumeister
0 / 0 / 0
Регистрация: 06.02.2015
Сообщений: 9
11.02.2015, 20:50  [ТС] #11
да, видимо придется так искать
0
Braumeister
0 / 0 / 0
Регистрация: 06.02.2015
Сообщений: 9
13.02.2015, 21:14  [ТС] #12
Все эти странности я наблюдал в Идее. Позже добавились не менее странные странности. Т.е. я прикручиваю полочку на кухне, а соседняя комната разваливается...чудеса. Решил попробовать Идею, но вид сбоку - Android Studio. После импорта проекта, все чудеса исчезли. Вот такой хэппи энд :о)
0
13.02.2015, 21:14
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.02.2015, 21:14
Привет! Вот еще темы с решениями:

Словари. Порядок следования элементов
Вопрос возможно странный но // Допустим я создаю словарь. ...

Порядок следования элементов в массиве
Помогите, пожалуйста найти ошибку. Как нужно правильно записать метод, чтобы он...

Изменить порядок следования элементов массива
В одномерном массиве, состоящем из n вещественных элементов, вычислить: 1)...

Пользовательский порядок следования элементов в ComboBox
Доброго дня, друзья! Есть combobox, элементы списка которого формируются на...


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

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

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