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

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

Войти
Регистрация
Восстановить пароль
 
Baron Rojo
2 / 2 / 0
Регистрация: 21.11.2012
Сообщений: 184
#1

Непонятная ошибка - Android

11.01.2016, 11:22. Просмотров 147. Ответов 9
Метки нет (Все метки)

Народ! Понимаю что скорее всего сия проблема совсем уже простая, но все же ее решение мне непонятно. Создал проект. Среда разработки Android Studio 1.4. Проект прост как 5 рублей: при нажатии на кнопку я хочу вывести в TextView случайные элемент массива типа String....
Вот код:

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    android:id="@+id/ll"
    android:layout_height="fill_parent"
    android:layout_width="fill_parent"
    android:orientation="vertical"
    xmlns:android="http://schemas.android.com/apk/res/android" >
 
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/text"/>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="generate"
        android:id="@+id/gen"/>
 
    </LinearLayout>

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
package com.example.bjornskau.lesson4;
 
import  android.app.Activity;
 
 
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.text.Editable;
import  android.view.View;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
 
import java.util.Random;
 
 
public class MainActivity extends Activity {
final Button gen = (Button)findViewById(R.id.gen);
    TextView text=(TextView)findViewById(R.id.text);
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
gen.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Random r= new Random();
     String edt[] =  {"Ivan", "Pedro","Trajanus","Imperio"};
        String str=edt[r.nextInt(3)];
        text.setText(str); //   text.setText("Hello"); - ТОЖЕ НЕ РАБОТАЕТ! 
 
    }
});
 
    }
 
 
 
 
}
Список ошибок во вложениях....
Миниатюры
Непонятная ошибка  
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.01.2016, 11:22     Непонятная ошибка
Посмотрите здесь:

непонятная ошибка Android
Непонятная ошибка при запуске приложения в эмуляторе Android
Android Непонятная ошибка
Непонятная ошибка Android
Непонятная ошибка Тоста Android
Android Непонятная ошибка
Непонятная ошибка в Android Studio, парсинг, jsoup Android

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Паблито
2012 / 1754 / 545
Регистрация: 12.05.2014
Сообщений: 6,207
Завершенные тесты: 1
11.01.2016, 11:33     Непонятная ошибка #2
все эти строки должны быть внутри метода onCreate()
Java
1
2
3
4
5
6
7
8
9
10
11
        final Button gen = (Button) findViewById(R.id.gen);
        final TextView text = (TextView) findViewById(R.id.text);
        gen.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Random r = new Random();
                String edt[] = {"Ivan", "Pedro", "Trajanus", "Imperio"};
                String str = edt[r.nextInt(3)];
                text.setText(str); //   text.setText("Hello"); - ТОЖЕ НЕ РАБОТАЕТ! 
            }
        });
Valakin
430 / 96 / 15
Регистрация: 21.02.2015
Сообщений: 724
11.01.2016, 11:46     Непонятная ошибка #3
TextView text=(TextView)findViewById(R.id.text);

почему не происходит инициализация?

как например у

String edt[] = {"Ivan", "Pedro", "Trajanus", "Imperio"};
Baron Rojo
2 / 2 / 0
Регистрация: 21.11.2012
Сообщений: 184
11.01.2016, 12:03  [ТС]     Непонятная ошибка #4
То есть даже findViewById внутри onCreate?

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
  protected void onCreate(Bundle savedInstanceState) {
        final Button gen = (Button)findViewById(R.id.gen);
     final    TextView text=(TextView)findViewById(R.id.text);
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
gen.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Random r= new Random();
     String edt[] =  {"Ivan", "Pedro","Trajanus","Imperio"};
        String str=edt[r.nextInt(3)];
        text.setText("Hello");
 
    }
});
 
    }
Так тоже не работает. Ошибка та же.
Паблито
2012 / 1754 / 545
Регистрация: 12.05.2014
Сообщений: 6,207
Завершенные тесты: 1
11.01.2016, 12:06     Непонятная ошибка #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
вызывать findViewByID можно и из других методов, но не как поле класса
оно по идее выполняется в момент создания самого объекта акитивити, и на тот момент никакие вьющки или текстовые поля еще не инициализированы

все они становятся доступны после вызова setContentView(bla-bla); в onCreate()
Baron Rojo
2 / 2 / 0
Регистрация: 21.11.2012
Сообщений: 184
11.01.2016, 12:22  [ТС]     Непонятная ошибка #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
public class MainActivity extends Activity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        final Button gen = (Button)findViewById(R.id.gen);
     final    TextView text=(TextView)findViewById(R.id.text);
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
gen.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
       Random r= new Random();
     String edt[] = new String[] {"Ivan", "Pedro","Trajanus","Imperio"};
       String str=edt[r.nextInt(3)];
        text.setText(str);
 
    }
});
 
    }
 
 
 
 
}
Valakin
430 / 96 / 15
Регистрация: 21.02.2015
Сообщений: 724
11.01.2016, 12:26     Непонятная ошибка #7
Цитата Сообщение от Baron Rojo Посмотреть сообщение
Понял
не похоже, читай предыдущий пост
Паблито
11.01.2016, 12:30
  #8

Не по теме:

все вьюшки мжно будет искать через findVieByID только после setContentView

Baron Rojo
2 / 2 / 0
Регистрация: 21.11.2012
Сообщений: 184
11.01.2016, 12:33  [ТС]     Непонятная ошибка #9
Фух, прошу простить невнимательность.) Разобрался.))))
Valakin
430 / 96 / 15
Регистрация: 21.02.2015
Сообщений: 724
11.01.2016, 15:19     Непонятная ошибка #10
получается что инициализация не является методом по сути?
Yandex
Объявления
11.01.2016, 15:19     Непонятная ошибка
Ответ Создать тему
Опции темы

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