Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Braumeister
0 / 0 / 0
Регистрация: 06.02.2015
Сообщений: 9
#1

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

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

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

Добавлено через 29 секунд
Тогда почему button?
Braumeister
0 / 0 / 0
Регистрация: 06.02.2015
Сообщений: 9
11.02.2015, 16:19  [ТС]     Поменял порядок следования элементов в layout - приложение упало #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;
        }
    }
 
 
}
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
11.02.2015, 18:40     Поменял порядок следования элементов в layout - приложение упало #10
Ну тут или баги андроида или еще что, может после перезагрузки заработает, ну или ищите методом тыка, напр. вместо ImageView поставьте другой вью и посмотрите.
Braumeister
0 / 0 / 0
Регистрация: 06.02.2015
Сообщений: 9
11.02.2015, 20:50  [ТС]     Поменял порядок следования элементов в layout - приложение упало #11
да, видимо придется так искать
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.02.2015, 21:14     Поменял порядок следования элементов в layout - приложение упало
Еще ссылки по теме:

Android переходы layout
Layout со скроллингом Android
Лупа на layout Android
Сдвиг элементов layout при добавлении нового элемента Android
Android layout Android

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

Или воспользуйтесь поиском по форуму:
Braumeister
0 / 0 / 0
Регистрация: 06.02.2015
Сообщений: 9
13.02.2015, 21:14  [ТС]     Поменял порядок следования элементов в layout - приложение упало #12
Все эти странности я наблюдал в Идее. Позже добавились не менее странные странности. Т.е. я прикручиваю полочку на кухне, а соседняя комната разваливается...чудеса. Решил попробовать Идею, но вид сбоку - Android Studio. После импорта проекта, все чудеса исчезли. Вот такой хэппи энд :о)
Yandex
Объявления
13.02.2015, 21:14     Поменял порядок следования элементов в layout - приложение упало
Ответ Создать тему
Опции темы

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