2 / 2 / 0
Регистрация: 21.11.2012
Сообщений: 207
1

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

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

Author24 — интернет-сервис помощи студентам
Народ! Понимаю что скорее всего сия проблема совсем уже простая, но все же ее решение мне непонятно. Создал проект. Среда разработки 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)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.01.2016, 11:22
Ответы с готовыми решениями:

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

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

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

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

9
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
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
435 / 101 / 15
Регистрация: 21.02.2015
Сообщений: 845
11.01.2016, 11:46 3
TextView text=(TextView)findViewById(R.id.text);

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

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

String edt[] = {"Ivan", "Pedro", "Trajanus", "Imperio"};
0
2 / 2 / 0
Регистрация: 21.11.2012
Сообщений: 207
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
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
11.01.2016, 12:06 5
Лучший ответ Сообщение было отмечено Baron Rojo как решение

Решение

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

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

Не по теме:

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

0
2 / 2 / 0
Регистрация: 21.11.2012
Сообщений: 207
11.01.2016, 12:33  [ТС] 9
Фух, прошу простить невнимательность.) Разобрался.))))
0
435 / 101 / 15
Регистрация: 21.02.2015
Сообщений: 845
11.01.2016, 15:19 10
получается что инициализация не является методом по сути?
0
11.01.2016, 15:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.01.2016, 15:19
Помогаю со студенческими работами здесь

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

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

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

Непонятная ошибка в коде (AndroidStudio)
Привет! Изучаю создание приложений на Android и прохожу видео уроки. Там мы создаём простейший...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru