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

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

Войти
Регистрация
Восстановить пароль
 
poy4eg
0 / 0 / 0
Регистрация: 21.03.2015
Сообщений: 40
#1

Смена активити - Android

14.04.2015, 10:36. Просмотров 828. Ответов 5
Метки нет (Все метки)

Пишу программу с общей сутью - есть список городов, при выборе города из списка должен делаться переход на новый активити этого города... Меню с выбором я еще как-то прикрутил, но вот с переходом на новый активити беда. Intent не помогает и я догадываюсь, что это из-за недостатка базовых знаний о механизме, в связи с этим прошу помочь с реализацией перехода в новый активити
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
import android.app.Activity;
import android.content.Intent;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.PopupMenu;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
 
 
public class MainActivity extends Activity {
 
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
 
 
        Button button = (Button) findViewById(R.id.button);
        button.setOnClickListener(viewClickListener);
 
 
    }
 
    View.OnClickListener viewClickListener = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            showPopupMenu(v);
        }
    };
 
    public void showPopupMenu(View v) {
        PopupMenu popupMenu = new PopupMenu(this, v);
         popupMenu.getMenuInflater().inflate(R.menu.goroda,
         popupMenu.getMenu());
 
        popupMenu
                .setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
 
                    @Override
                    public boolean onMenuItemClick(MenuItem item) {
                       
                        switch (item.getItemId()) {
 
                            case R.id.Pinsk:
                                Toast.makeText(getApplicationContext(),
                                        "Вы выбрали Пинск",
                                        Toast.LENGTH_SHORT).show();                               
                                return true;
                            case R.id.Minsk:
                                Toast.makeText(getApplicationContext(),
                                        "Вы выбрали Минск",
                                        Toast.LENGTH_SHORT).show();
                                return true;
                            case R.id.Brest:
                                Toast.makeText(getApplicationContext(),
                                        "Вы выбрали Брест",
                                        Toast.LENGTH_SHORT).show();
                                return true;
                            default:
                                return false;
                        }
                    }
                });
 
        popupMenu.setOnDismissListener(new PopupMenu.OnDismissListener() {
 
            @Override
            public void onDismiss(PopupMenu menu) {
                
            }
        });
        popupMenu.show();
 
 
    }
 
 
 
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.04.2015, 10:36     Смена активити
Посмотрите здесь:

Android Вызов активити
Блокировка активити Android
Загрузка активити Android
Запуск активити Android
Android Второй активити
Из Активити в Фрагмент Android
Активити и фрагмент Android
Android Абстрактная активити
Android Несколько Listview в 1 активити
Адаптивность Активити Android
Android Пересоздание активити
Android Вызов активити

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Valakin
430 / 96 / 15
Регистрация: 21.02.2015
Сообщений: 724
14.04.2015, 11:05     Смена активити #2
а где же Intent который не помогает?
poy4eg
0 / 0 / 0
Регистрация: 21.03.2015
Сообщений: 40
14.04.2015, 11:43  [ТС]     Смена активити #3
Цитата Сообщение от Valakin Посмотреть сообщение
а где же Intent который не помогает?

Java
1
2
3
4
5
6
7
8
case R.id.Pinsk:
                                Toast.makeText(getApplicationContext(),
                                        "Вы выбрали Пинск",
                                        Toast.LENGTH_SHORT).show();
                                Intent intent = new Intent(this, Pinsk.class);
                                startActivity(intent);
                                
                                return true;
предположим вот... ошибку бьет следующего харктера

XML
1
2
3
4
5
6
7
8
Error:(61, 49) error: no suitable constructor found for Intent(<anonymous OnMenuItemClickListener>,Class<Pinsk>)
constructor Intent.Intent(String,Uri) is not applicable
(argument mismatch; <anonymous OnMenuItemClickListener> cannot be converted to String)
constructor Intent.Intent(Context,Class<?>) is not applicable
(argument mismatch; <anonymous OnMenuItemClickListener> cannot be converted to Context)
Note: Some messages have been simplified; recompile with -Xdiags:verbose to get full output
Error:Execution failed for task ':allbelarus:compileDebugJava'.
> Compilation failed; see the compiler error output for details.
Добавлено через 20 минут
изменил
Java
1
Intent intent = new Intent(this, Pinsk.class);
на
Java
1
Intent intent = new Intent(MainActivity.this, Pinsk.class);
и все заработало... может кто объяснит в чем суть?
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
14.04.2015, 12:30     Смена активити #4
Цитата Сообщение от poy4eg Посмотреть сообщение
может кто объяснит в чем суть?
Дsк там же всё сказано - указатель this ссылается на объект OnMenuItemClickListener(), а конструктор ждёт Context...
Valakin
430 / 96 / 15
Регистрация: 21.02.2015
Сообщений: 724
14.04.2015, 13:55     Смена активити #5
this.переменная понятно что такое,
а что такое activity.this? это контекст?
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
14.04.2015, 15:02     Смена активити #6
Цитата Сообщение от Valakin Посмотреть сообщение
а что такое activity.this? это контекст?
Нет там такого.
Там есть MainActivity.this, используемый для ссылки на объект внешнего класса (MainActivity) по отношению к данному (OnMenuItemClickListener).

Поскольку MainActivity - это наследник класса Activity, а Activity - через цепочку наследований оказывается наследником Context, то MainActivity - это экземляр и класса Context.
Ну, и, скармливая его вместо Context, ничего страшного не происходит, а происходит не страшное, а то, что и нужно.
Yandex
Объявления
14.04.2015, 15:02     Смена активити
Ответ Создать тему
Опции темы

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