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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
EDIsaev
4 / 4 / 0
Регистрация: 27.03.2012
Сообщений: 132
#1

Создание и вызов второго Activity - Программирование Android

18.02.2014, 14:25. Просмотров 1288. Ответов 6
Метки нет (Все метки)

Добрый день!

Немного запутался с ООП в проекте
суть в следующем:
Имеем главное Activity:

Java
1
2
3
4
5
6
7
8
9
10
11
12
public class MainActivity extends Activity {
  ...
  private ThreeLevelAdapter threeLevelAdapter;
  
    @Override
    protected void onPostExecute(String result) {
      ...
      // создаём элемент
      threeLevelAdapter = new ThreeLevelAdapter(this, selected, manager, len1);
      ...
    }
}
в классе ThreeLevelAdapter есть обработчик клика по пункту меню:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class ThreeLevelAdapter extends com.example.TreeViews.AbstractTreeViewAdapter<Long> {
   @Override // Обработка клика по пункту меню
    public void handleItemClick(final View view, final Object id) {
        final Long longId = (Long) id;
        Log.d(TAG,"ClickedId: "+longId);
        final TreeNodeInfo<Long> info = getManager().getNodeInfo(longId);
        if (info.isWithChildren())
            super.handleItemClick(view, id);
      //Тут бы хотелось для каждого пункта меню создавать свою Activity в зависимости от longId...
      //Вопрос: КАК? Если из основного Activity можно создать след. образом:
      //Intent intent = new Intent(this, ContentActivity.class);
      //startActivity(intent);
      //то отсюда не могу достучаться
    }
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
NiRamz
211 / 211 / 16
Регистрация: 26.12.2010
Сообщений: 691
18.02.2014, 14:50     Создание и вызов второго Activity #2
Java
1
new Intent(this, ContentActivity.class);
передавайте в адаптер контекст, его и используйте. Иначе у вас получается что "this" указывает на класс адаптера.
EDIsaev
4 / 4 / 0
Регистрация: 27.03.2012
Сообщений: 132
18.02.2014, 15:16  [ТС]     Создание и вызов второго Activity #3
Цитата Сообщение от NiRamz Посмотреть сообщение
передавайте в адаптер контекст, его и используйте. Иначе у вас получается что "this" указывает на класс адаптера.
так передан он, как использовать?
threeLevelAdapter = new ThreeLevelAdapter(this, selected, manager, len1);

Java
1
2
3
4
5
6
7
8
9
class ThreeLevelAdapter extends com.example.TreeViews.AbstractTreeViewAdapter<Long> {
  ...   
    public ThreeLevelAdapter(final MainActivity mainActivity,
                             final Set<Long> selected,
                             final TreeStateManager<Long> treeStateManager,
                             final int numberOfLevels) {
        super(mainActivity, treeStateManager, numberOfLevels);
    }
}
И если я пишу:
Intent intent = new Intent(mainActivity, ContentActivity.class);
он mainActivity не видит
и startActivity тоже не видит
KillAndEat
63 / 63 / 8
Регистрация: 17.05.2013
Сообщений: 286
18.02.2014, 15:23     Создание и вызов второго Activity #4
попробуйте getApplicationContext()
NiRamz
211 / 211 / 16
Регистрация: 26.12.2010
Сообщений: 691
18.02.2014, 15:26     Создание и вызов второго Activity #5
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
class ThreeLevelAdapter extends com.example.TreeViews.AbstractTreeViewAdapter<Long> {
    private Activity mainActivity;
    public ThreeLevelAdapter(final MainActivity mainActivity,
                             final Set<Long> selected,
                             final TreeStateManager<Long> treeStateManager,
                             final int numberOfLevels) {
        super(mainActivity, treeStateManager, numberOfLevels);
        this.mainActivity = mainActivity;
}
 
@Override // Обработка клика по пункту меню
    public void handleItemClick(final View view, final Object id) {
        final Long longId = (Long) id;
        Log.d(TAG,"ClickedId: "+longId);
        final TreeNodeInfo<Long> info = getManager().getNodeInfo(longId);
        if (info.isWithChildren())
            super.handleItemClick(view, id);
      //Тут бы хотелось для каждого пункта меню создавать свою Activity в зависимости от longId...
      //Вопрос: КАК? Если из основного Activity можно создать след. образом:
      Intent intent = new Intent(mainActivity, ContentActivity.class);
      startActivity(intent);
      //то отсюда не могу достучаться
    }
}
EDIsaev
4 / 4 / 0
Регистрация: 27.03.2012
Сообщений: 132
18.02.2014, 15:35  [ТС]     Создание и вызов второго Activity #6
NiRamz, вот спасибо, идёю понял!)
только mainActivity.startActivity(intent);
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.02.2014, 16:02     Создание и вызов второго Activity
Еще ссылки по теме:
Android Создание нового Activity
Создание фона для Activity Android
Динамическое создание элементов на другом activity Android
Android Создание суперкласса для всех Activity
Android Создание сервера, запускающего разные Activity

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

Или воспользуйтесь поиском по форуму:
NiRamz
211 / 211 / 16
Регистрация: 26.12.2010
Сообщений: 691
18.02.2014, 16:02     Создание и вызов второго Activity #7
ну да, именно так
Yandex
Объявления
18.02.2014, 16:02     Создание и вызов второго Activity
Ответ Создать тему
Опции темы

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