Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
Doctor_
238 / 237 / 142
Регистрация: 03.02.2011
Сообщений: 1,436
1

Вызов новой активити не из класса активити

03.06.2014, 12:50. Просмотров 1315. Ответов 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)

Тот вариант что на самом верху не выдает ошибки, он просто не показывает текст.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.06.2014, 12:50
Ответы с готовыми решениями:

Как вызвать метод в активити классе из обычного не активити класса?
Есть активити в котором вводятся логин и пароль. При нажатии кнопки "войти" в отдельном классе...

На телефоне highscreen 3 на всех активити происходит быстрый самовозврат к главной активити
Сделал меню в виде ListView. При клике на меню запускаются активити. На эмуляторе работает, на...

Изменение параметров активити из другого активити
Как сделать так чтобы из первого активити поменять final ImageView...

Отображение активити поверх другого активити
Ребят подскажите пожалуйста как такое сделать. Есть активити с картой, по нажатию кнопки...

Вызов активити
Доброго времени суток! Импортировал код с гитхаб, решил немного потренироваться на нем, для начала...

2
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);
}
0
Doctor_
238 / 237 / 142
Регистрация: 03.02.2011
Сообщений: 1,436
03.06.2014, 14:47  [ТС] 3
Проще прощения, это метод
Java
1
2
3
void setText(String str) {
        testOutcome.setText(str);
    }
0
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.06.2014, 14:47

Вызов активити
При удачной авторизации вылетает сообщение "Login Successfull", а как сделать так что бы при этом...

Вызов разных фрагментов или активити на клиенте по команде сервера
Подскажите пожалуйста направление/примеры/описалово/библиотеки, хоть что нибудь что поможет решить...

Открыть активити не из главного класса
привет всем. ситуация такая: есть класс (обычный класс с методами) в котором в потоке допустим...


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

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

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