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

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

03.06.2014, 12:50. Просмотров 1171. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.06.2014, 12:50
Ответы с готовыми решениями:

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

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

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

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

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

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

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

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

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


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

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

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