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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 38, средняя оценка - 4.61
snakeas
0 / 0 / 0
Регистрация: 20.10.2012
Сообщений: 4
#1

Обращение к элементам активити из другого класса - Программирование Android

20.10.2012, 18:50. Просмотров 5213. Ответов 4
Метки нет (Все метки)

Добрый день. Ломаю голову битый час, все не могу понять, почему у меня не получается. Опишу по шагам.
Создал проект андроид (в эклипсе), есть layout-файл activity_main.xml, в нем TextView имеющий id tvHello,
я создал класс Student, в нем есть конструктор и метод, меняющий этот tvHello и при запуске программы:
1. создается объект этого класса
2. открывается layout файл
3. вызывается метод, меняющий TextView.
Но при запуске на эмуляторе приложение вылетает, в LogCat ошибка NullPointerException. Исходники прилагаю.

Main_Activity:
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
package com.example.student_sos;
 
import android.os.Bundle;
 
import android.app.Activity;
import android.view.Menu;
import android.widget.TextView;
import com.example.student_sos.Student;;
 
 
public class MainActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        Student st = new Student();
        st.showTextOnView("бла - бла");
    }
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
}
класс Student:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package com.example.student_sos;
import android.widget.TextView;
import android.app.Activity;
import com.example.student_sos.R;
 
public class Student extends Activity {
    String s;
    int tempInt;
    TextView tvHello;
    public Student(){
        tempInt = 1;
        return;
    }
 
    public void showTextOnView(String text){
        
        tvHello = (TextView) findViewById(R.id.tvHello);
        tvHello.setText(text);
        tempInt = 2;
        return;
    }
 
}
Я примерно понимаю в чем проблема, но в голове не могу уместить, почему такое возникает? Activity каким-то образом блокируется? Или что-то еще.
Очень надеюсь на вашу помощь, заранее спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.10.2012, 18:50     Обращение к элементам активити из другого класса
Посмотрите здесь:
Обращение к элементам другой Активити Android
Обращение к элементам фрагмента из активити Android
Доступ к элементам Activity из другого класса Android
Android Обращение к методу другого класса
Обращение к textView из другого класса (не MainActivity) в AndroidStudio Android
Android Изменение параметров активити из другого активити
Android Отображение активити поверх другого активити
Как вызвать метод в активити классе из обычного не активити класса? Android
Вызов новой активити не из класса активити Android
Android Обращение к фрагменту вне активити
Android Как реализовать обращение из SurfacView к TextView в основной Активити
Android Работа с Handler из другого активити

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
20.10.2012, 19:23     Обращение к элементам активити из другого класса #2
у вас здесь два активити и вы пытаетесь найти внутри второго активити то, что находится внутри первого активити)
snakeas
0 / 0 / 0
Регистрация: 20.10.2012
Сообщений: 4
21.10.2012, 05:31  [ТС]     Обращение к элементам активити из другого класса #3
Не могу вкурить, почему же я обращаюсь к первому активити?
У меня есть layout файл. Там есть визуальный компонент. Затем я с помощью метода SetContentView отображаю этот layout.
В каком месте я обращаюсь к активити? Проблему свою я понял, вопрос чисто теоретический, ибо никак не дойдет.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
21.10.2012, 06:37     Обращение к элементам активити из другого класса #4
вы обращаетесь к активити стюдент в месте findViewById(R.id.tvHello); а контент у вас вставлен в активити MainActivity
kvaka
29 / 29 / 3
Регистрация: 26.06.2012
Сообщений: 163
22.10.2012, 11:37     Обращение к элементам активити из другого класса #5
Не вижу смысла таким образом создавать объект, расширяющий активити . Активити гарантированно существует пока оно на экране, в другом случае система может посчитать его ненужным и грохнуть. При создании активити должен вызываться метод onCreate, в котором проходит вся инициализация, включая указание XML файла, который должен использоваться в активити. Этот метод сработает при получении активити соответствующего намерения (Intent). Например таким образом:
Java
1
startActivity(new Intent(this, Student.class));
В Вашем же случае инициализация активити не проводится, на экран активити не выводится и зачем подобное расширение класса Activity нужно мягко говоря не очень понятно, ведь все методы расширяемого класса вы оставляете "за бортом" и ниоткуда их не вызываете. И еще непонятно зачем в конце каждого метода писать return; по завершении метода мы и так из него выйдем. Опишите что конкретно Вы хотите получить на выходе, но перед этим прочитайте базовую теоретическую часть.
Yandex
Объявления
22.10.2012, 11:37     Обращение к элементам активити из другого класса
Ответ Создать тему
Опции темы

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