Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
Baron Rojo
2 / 2 / 0
Регистрация: 21.11.2012
Сообщений: 202
1

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

11.01.2016, 11:22. Просмотров 799. Ответов 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"); - ТОЖЕ НЕ РАБОТАЕТ! 
 
    }
});
 
    }
 
 
 
 
}
Список ошибок во вложениях....
0
Миниатюры
Непонятная ошибка  
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.01.2016, 11:22
Ответы с готовыми решениями:

Непонятная ошибка
Приложение на каких устройствах работает, а на каких то нет! У меня HTC One...

Непонятная ошибка
Здравствуйте. Есть такая проблемка: При загрузки большого количества...

Непонятная ошибка
Error:Error: Duplicate resources:...

Непонятная ошибка
JDK и SDK указаны, но Идея ругается на джавовские методы..

непонятная ошибка
Это мое первое приложение для Android, да и вообще на Java, так что ошибки...

9
Pablito
2767 / 2198 / 744
Регистрация: 12.05.2014
Сообщений: 7,711
Завершенные тесты: 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"); - ТОЖЕ НЕ РАБОТАЕТ! 
            }
        });
1
Valakin
433 / 99 / 15
Регистрация: 21.02.2015
Сообщений: 782
11.01.2016, 11:46 3
TextView text=(TextView)findViewById(R.id.text);

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

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

String edt[] = {"Ivan", "Pedro", "Trajanus", "Imperio"};
0
Baron Rojo
2 / 2 / 0
Регистрация: 21.11.2012
Сообщений: 202
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");
 
    }
});
 
    }
Так тоже не работает. Ошибка та же.
0
Pablito
2767 / 2198 / 744
Регистрация: 12.05.2014
Сообщений: 7,711
Завершенные тесты: 1
11.01.2016, 12:06 5
Лучший ответ Сообщение было отмечено Baron Rojo как решение

Решение

вызывать findViewByID можно и из других методов, но не как поле класса
оно по идее выполняется в момент создания самого объекта акитивити, и на тот момент никакие вьющки или текстовые поля еще не инициализированы

все они становятся доступны после вызова setContentView(bla-bla); в onCreate()
0
Baron Rojo
2 / 2 / 0
Регистрация: 21.11.2012
Сообщений: 202
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);
 
    }
});
 
    }
 
 
 
 
}
0
Valakin
433 / 99 / 15
Регистрация: 21.02.2015
Сообщений: 782
11.01.2016, 12:26 7
Цитата Сообщение от Baron Rojo Посмотреть сообщение
Понял
не похоже, читай предыдущий пост
0
Pablito
11.01.2016, 12:30
  #8

Не по теме:

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

0
Baron Rojo
2 / 2 / 0
Регистрация: 21.11.2012
Сообщений: 202
11.01.2016, 12:33  [ТС] 9
Фух, прошу простить невнимательность.) Разобрался.))))
0
Valakin
433 / 99 / 15
Регистрация: 21.02.2015
Сообщений: 782
11.01.2016, 15:19 10
получается что инициализация не является методом по сути?
0
11.01.2016, 15:19
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.01.2016, 15:19

Непонятная ошибка Тоста
Пишу свой лонгклик (управляемая длительность, XY диапазон отклонения пальца)....

Непонятная ошибка вылазит в консоль
Приветствую! В консоль разработчика периодически вываливается ошибка, природа...

Непонятная ошибка в Android Studio, парсинг, jsoup
Прошу помощи, ошибка, возможно будет банальной, т.к. это мое первое приложение...


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

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

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