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

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

11.02.2015, 13:58. Просмотров 627. Ответов 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);
Почему так? Разве порядок следования элементов разметки важен не только для визуального представления?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.02.2015, 13:58
Ответы с готовыми решениями:

Анимированный дизайн смены Layout или просто выдвигаемый layout
Ну, думаю тут и так всё понятно. Я просто не знаю, какие ключевые слова вводить...

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

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

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

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

11
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,074
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,074
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,074
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,074
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,074
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

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

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

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


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

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

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