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

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

Войти
Регистрация
Восстановить пароль
 
Doctor_
234 / 234 / 71
Регистрация: 03.02.2011
Сообщений: 1,415
#1

Вызов новой активити не из класса активити - Программирование Android

03.06.2014, 12:50. Просмотров 976. Ответов 2
Метки нет (Все метки)

Есть 4 класса:
1) WelcomeActivity;
2) MainActivity;
3) PopUpActivity;
4) Client.

Программа работает с сервером и получает данные в класс Client. Логика такая, загружается WelcomeActivity, куда пользователь вводит данные и отсылает на сервер. Если сервер успешно валидирует данные, то высылает клиенту флаг, мол можно загружать MainActivity. В MainActivity опять заполняет какие-то поля и высылает их серверу. Сервер обрабатывает и высылает простой string. Вопрос: Как при получении последнего string вызвать PopUpActivity и вписать это string в TextView?

Если чего-то не хватает пишите, дополню.

Часть класса Client (метод, нас интересует последний else if):
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public void run() throws Exception {
        Socket client = new Socket(ip, port);
        in = new BufferedReader(new InputStreamReader(client.getInputStream()));
        out = new PrintWriter(client.getOutputStream(), true);
        out.println(welcomeActivity.getCredentials());
        while (true) {
            final String line = in.readLine();
            if (line.equals("#GO#")) {
                System.out.println("#GO#");
                mainActivityIntent = new Intent(welcomeActivity,
                        MainActivity.class);
                welcomeActivity.startActivity(mainActivityIntent);
            } else if (line.equals("#CLOSE#")) {
                client.close();
                break;
            } else if (line.startsWith("#RESULTS")) {           
                Intent i = new Intent(MainActivity.getContext(), PopUpActivity.class);
                i.putExtra(line, line);
                i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                MainActivity.getContext().startActivity(i);             
            }
        }
    }
Класс WelcomeActivity в котором вызывается метод (при нажатии на кнопку):

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public void onClick(View v) {
        ip = ipText.getText().toString();
        port = Integer.parseInt(portText.getText().toString());
        login = loginText.getText().toString();
        password = passwordText.getText().toString();
        credentials = login + "#" + password + "#" + brand + "#" + device + "#"
                + hardware + "#" + manufacturer + "#" + product;
        client = new Client(ip, port, this);
        new Handler().start();
    }
 
    private class Handler extends Thread {
        public void run() {
            try {
                client.run();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
И класс PopUpActivity, метод:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_pop_up);
        closeButton = (Button) findViewById(R.id.closeButton);
        testOutcome = (TextView) findViewById(R.id.textArea);
        closeButton.setOnClickListener(this);
 
        //
        Bundle extras = getIntent().getExtras();
        if (extras == null) {
            return;
        }
        String value = extras.getString(Intent.EXTRA_TEXT);
        if (value != null) {
            setText(value);
        }
    }
Проблема в том, что String (value) не выводится в TextView, открывается просто Activity которая пустая с кнопкой.


Это последняя версия которую я пробовал. До этого пробовал сделать AlertDialog, тоже не получилось.
Пробовал так:
1) В MainActivity создавал
Java
1
2
3
4
5
6
7
8
9
10
final static Context context;
....
public void onCreate() {
context = getBaseContext();
....
}
...
public static Context getContext() {
  return context;
}
2) И в клиенте обращался к нему через:
Java
1
MainActivity.getContext().getTextView().setText("text");
но он ругался на то что он не проинициализирован (nullpointerexception)

Тот вариант что на самом верху не выдает ошибки, он просто не показывает текст.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.06.2014, 12:50     Вызов новой активити не из класса активити
Посмотрите здесь:
Android Вызов активити
Android Вызов активити
Android Вызов разных фрагментов или активити на клиенте по команде сервера
Открыть активити не из главного класса Android
Android Обращение к элементам активити из другого класса
Один экземпляр класса для всех активити Android
Android Активити
Android Второй активити
Android Смена активити
Адаптивность Активити Android
Загрузка активити Android
Android Пересоздание активити

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
glnix
14 / 14 / 5
Регистрация: 08.04.2013
Сообщений: 75
03.06.2014, 13:45     Вызов новой активити не из класса активити #2
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_pop_up);
        closeButton = (Button) findViewById(R.id.closeButton);
        testOutcome = (TextView) findViewById(R.id.textArea);
        closeButton.setOnClickListener(this);
 
        //
        Bundle extras = getIntent().getExtras();
        if (extras == null) {
            return;
        }
        String value = extras.getString(Intent.EXTRA_TEXT);
        if (value != null) {
            setText(value);
        }
    }
if (value != null) {
testOutcome.setText(value);
}
Doctor_
234 / 234 / 71
Регистрация: 03.02.2011
Сообщений: 1,415
03.06.2014, 14:47  [ТС]     Вызов новой активити не из класса активити #3
Проще прощения, это метод
Java
1
2
3
void setText(String str) {
        testOutcome.setText(str);
    }
Yandex
Объявления
03.06.2014, 14:47     Вызов новой активити не из класса активити
Ответ Создать тему
Опции темы

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