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

Создание объекта через xml разметку. NullPointerExeption

29.12.2016, 03:11. Просмотров 255. Ответов 5
Метки нет (Все метки)

Кажется у меня пробел в основах, я думал прописывая вью через разметку, при сборке создается экземпляр класса, и стоит лишь найти вьюшку по id можно сразу юзать её методы, тем ни менее мне пишет ошибку NullPointerExeption.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.12.2016, 03:11
Ответы с готовыми решениями:

Преобразовать xml разметку в картинку
Искал честно не нашел. Есть xml разметка с кучей TextView. Можно ли как то...

Создание экрана программно и через xml файл
Когда задаю всё программно, все элементы как надо располагаются на экране,...

Неизвестный NullPointerExeption
Пишу активити, при вызове которого приосходит следующее: С помощью библиотеки...

Динамическое создание объекта
Всем привет! Заранее извиняюсь за глупый вопрос. Подскажите, пожалуйста, кто...

Создание объекта класса
public class MyClass { static int Variable = 1; } //создаю первый...

5
Alex_Fedor
42 / 42 / 5
Регистрация: 20.01.2015
Сообщений: 279
29.12.2016, 07:58 2
Телепаты на каникулах. Будут коды, лог ошибок будет ответ.
0
isen
0 / 0 / 0
Регистрация: 20.07.2016
Сообщений: 25
29.12.2016, 09:15  [ТС] 3
Alex_Fedor, я ведь спросил про общий механизм создания экземпляров класса через xml, в общем ниже приведён объект player, и чудо кастомная кнопка управления сим объектом

Добавлено через 6 минут
XML
1
2
3
4
5
<isen.isenwalks.Creatures.Player
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@mipmap/ic_launcher"
            android:id="@+id/player"/>
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
public class LeftButton extends Button implements View.OnClickListener,View.OnLongClickListener,View.OnTouchListener {
private Player player;
    private final long DELAY=100;
 
    public LeftButton(Context context) {
        super(context);
        init();
 
    }
 
    public LeftButton(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
 
    }
 
    public LeftButton(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init();
 
    }
 
    public void init(){
        player=(Player) findViewById(R.id.player);
        setOnClickListener(this);
        setOnLongClickListener(this);
        setOnTouchListener(this);
    }
    @Override
    public void onClick(View view) {
        player.moveLeft();
    }
 
    @Override
    public boolean onLongClick(View view) {
 
        postDelayed(action,DELAY);
        return false;
    }
 
    @Override
    public boolean onTouch(View view, MotionEvent motionEvent) {
 
        switch(motionEvent.getAction()){
            case MotionEvent.ACTION_CANCEL: getHandler().removeCallbacks(action);break;
            case MotionEvent.ACTION_UP: getHandler().removeCallbacks(action);break;
        }
        return false;
    }
 
    private final Runnable action = new Runnable() {
        @Override
        public void run() {
            player.moveLeft();
            postDelayed(action,DELAY);
        }
    };
}
0
klim76
20 / 14 / 2
Регистрация: 10.06.2016
Сообщений: 144
29.12.2016, 10:31 4
Цитата Сообщение от isen Посмотреть сообщение
создания экземпляров класса через xml

мухи разметка отдельно, котлеты объекты отдельно
0
Alex_Fedor
42 / 42 / 5
Регистрация: 20.01.2015
Сообщений: 279
29.12.2016, 12:43 5
Извиняюсь за невежество, а где вы такой код видели, и на кой такой код нужен. Всегда в описании рисуем кнопку в разметке назначаем ей слушателя, пишем обработчик кликанья.
0
isen
0 / 0 / 0
Регистрация: 20.07.2016
Сообщений: 25
29.12.2016, 21:55  [ТС] 6
ПикачуПаблито, я выбираю тебя! помоги!

Добавлено через 2 часа 59 минут
Нашел

findViewById() returns a View if it exists in the layout you provided in setContentView(), otherwise it returns null and that's what happening to you.

Example if you setContentView(R.layout.activity_first); and then call findViewById(R.id.first_View); it will return a View which is your layout.

But if you call findViewById(R.id.second_View); it will return null since there is not a view in your activity_first.xml layout called @+id/second_View.

Добавлено через 10 минут
собака всё равно null
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
RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_game"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/game_background"
    android:gravity="bottom"
    tools:context="isen.isenwalks.GameActivity">
 
 
    <isen.isenwalks.Buttons.RightButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/right"
        android:id="@+id/rightButton"
        android:layout_alignParentBottom="true"
        android:layout_toEndOf="@+id/leftButton" />
 
    <isen.isenwalks.Buttons.LeftButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/left"
        android:id="@+id/leftButton"
 
        android:layout_alignParentBottom="true"
        android:layout_alignParentStart="true" />
 
    <isen.isenwalks.Creatures.Player
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@mipmap/ic_launcher"
        android:id="@+id/player"/>
 
 
</RelativeLayout>
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class GameActivity extends Activity {
 
 
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
 
        setContentView(R.layout.activity_game);
 
 
 
    }
 
 
}
Добавлено через 23 минуты
E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.NullPointerException
at isen.isenwalks.Buttons.RightButton.onClick(RightButton.java:44)
at android.view.View.performClick(View.java:4204)
at android.view.View$PerformClick.run(View.java:17355)
at android.os.Handler.handleCallback(Handler.java:725)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5041)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
at dalvik.system.NativeStart.main(Native Method)
0
29.12.2016, 21:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.12.2016, 21:55

Создание движущегося объекта (open gl)
Недавно начал писать живые обои. Нужно создать несколько падающих звезд, каждая...

Создание кликабельного объекта на карте
Приветствую всех! Использую либу mapsforge (offline карты osm), возникла...

Создание XML
Доброго дня. Прошу простить мои ламерские вопросы. Проблема раз: Нужно...


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

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

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