Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Cannon1
2 / 2 / 2
Регистрация: 29.09.2012
Сообщений: 415
1

Структура приложения в Android Studio

13.08.2017, 22:42. Просмотров 291. Ответов 11
Метки нет (Все метки)

Здравствуйте.

Вот сделал обработчик события на одну из многих кнопок в приложении в Google Maps Activity.

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
package com.sonexrfs.maplocs;
 
import android.support.v4.app.FragmentActivity;
import android.os.Bundle;
 
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import android.view.View;
import android.widget.Button;
 
 
public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {
 
    private GoogleMap mMap;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_maps);
        // Obtain the SupportMapFragment and get notified when the map is ready to be used.
        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);
 
    }
 
 
    /**
     * Manipulates the map once available.
     * This callback is triggered when the map is ready to be used.
     * This is where we can add markers or lines, add listeners or move the camera. In this case,
     * we just add a marker near Sydney, Australia.
     * If Google Play services is not installed on the device, the user will be prompted to install
     * it inside the SupportMapFragment. This method will only be triggered once the user has
     * installed Google Play services and returned to the app.
     */
    @Override
    public void onMapReady(GoogleMap googleMap) {
        mMap = googleMap;
 
        // Add a marker in Sydney and move the camera
        LatLng sydney = new LatLng(-34, 151);
        mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney"));
        mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));
 
        //mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(
        //        new LatLng(-18.142, 178.431), 2));
 
        // Other supported types include: MAP_TYPE_NORMAL,
        // MAP_TYPE_TERRAIN, MAP_TYPE_HYBRID and MAP_TYPE_NONE
        mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
    }
 
 
   // Мой метод переключения кнопкой
    int tag_buyton3 = 0;
    public void onButton3Click(View view)
    {
        Button button3 = (Button)findViewById(R.id.button3);
 
        tag_buyton3 = tag_buyton3 + 1;
        if (tag_buyton3 == 1) {
            mMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
            button3.setText("Map 2");
        }
        if (tag_buyton3 == 2) {
            mMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
            button3.setText("Map 3");
        }
        if (tag_buyton3 == 3) {
            mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
            button3.setText("Map 1");
        }
        if (tag_buyton3 == 3) {
            tag_buyton3 = 0;
        }
    }
 
}

Подскажите пожалуйста, мне так этот код и лепить в этом классе для всех обработчиков кнопок, для onCreate и вообще всей логики приложения, если у меня всего одного Google Maps Activity?

Боюсь что тогда получится бесконечная портянка кода, в которой будет тяжело разобраться и она будет такой длинной,
что мощности процессора не хватит осуществлять прокрутку кода скроллом...
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.08.2017, 22:42
Ответы с готовыми решениями:

Не отображается структура проекта в Android Studio
Здравствуйте! Скачал учебный проект с официального сайта АндройдДивелоперс:...

Создать релиз приложения на Android Studio
Как в Android Studio создать релиз приложения, если мне НЕ нужно его...

Вылет приложения сделанного на Android Studio
Здравствуйте! Создал проект на AndroidStudio, создал apk. Скинул на телефон,...

Создание приложения на Java в среде разработки android studio
как создать простое приложение на Java в android studio ? - не для планшета...

Подскажите как работать с шапкой приложения. android studio
Подскажите как работать с верхней шапкой(колонтикулом) приложения, (где...

11
ExFau$t
683 / 573 / 132
Регистрация: 08.05.2012
Сообщений: 2,829
13.08.2017, 22:53 2
Откуда вы только все берётесь такие беспомощные, даже по-русски не могут объяснить чего хотят и не владеют поисковыми системами.
Есть ещё обработчики нажатия в виде button.setOnClickListener(), а ещё есть замечательный case для множественного выбора. Последнее предложение я даже понимать не хочу, что имелось в виду.
0
Cannon1
2 / 2 / 2
Регистрация: 29.09.2012
Сообщений: 415
13.08.2017, 22:57  [ТС] 3
ExFau$t
Ну последнея фраза это сарказм)

А суть вопроса не в том, как укоротить(оптимизировать) этот код, а в том, что если у меня будет всего одно активити, то весь код приложения пишется в одном модуле в этом классе? Ну в примерах то так..

Я не нашел примера, как вынести этот код обработчика в отдельный класс, не создавая новое активити или фрагмент.

пс Я новичек ещё)
0
ExFau$t
683 / 573 / 132
Регистрация: 08.05.2012
Сообщений: 2,829
13.08.2017, 23:03 4
В активити пишется код взаимодействия с UI, остальное выносится в другие классы, согласно принципам ООП.
0
Cannon1
2 / 2 / 2
Регистрация: 29.09.2012
Сообщений: 415
13.08.2017, 23:06  [ТС] 5
То что у меня сейчас логика в теле
Java
1
public void onButton3Click(View view)
, можно вынести в другой класс,
не создавая новое активити? Если да, то подскажите пожалуйста как..
0
Mail-up
30 / 28 / 8
Регистрация: 07.01.2017
Сообщений: 205
13.08.2017, 23:13 6
можно как минимум разгрузить вынести всю логику по смыслу в отдельный метод. Например
в onCreate создать метод onButtonClick();

потом создать метод и вынести туда обработчик
0
ExFau$t
683 / 573 / 132
Регистрация: 08.05.2012
Сообщений: 2,829
13.08.2017, 23:18 7
Cannon1, я не понимаю твои диалекты. Что вынести, зачем вынести?
0
Cannon1
2 / 2 / 2
Регистрация: 29.09.2012
Сообщений: 415
14.08.2017, 17:38  [ТС] 8
ExFau$t
Mail-up правильно сообразил, я хочу разгрузить код, вынося обработчики желательно вообще в другой класс или модуль,
названный по смыслу. Хорошо бы пример...

Нечто похожее есть, если делать через фрагменты, но как обычно делают приложения где много логики и wiew?..

Добавлено через 18 часов 12 минут
Почему при переключении экранов в горизонтальное положение, произвольно срабатывает переключение карты на начальный вид?
То есть, если я до этого включу режим спутника карты, то при повороте телефона горизонтально(или обратно), карта опять переключается в режим MAP_TYPE_NORMAL? Тоесть тот, который был при запуске приложения. Как этого избежать?
0
Pablito
2812 / 2236 / 754
Регистрация: 12.05.2014
Сообщений: 7,821
Завершенные тесты: 1
14.08.2017, 17:45 9
прописывать кнопкам и вьюшкам прямо в xml имя метода, который будет ловить слики - так себе практика
примеров на форуме вагон, открываешь практически любую тему и там есть куски кода

в onCreate нахишь свою кнопку через findViewById и вешаешь на нее слушатель
если надо что бы код слушателя был в другом классе - этот класс должен имплементировать OnClickListener
1
Mail-up
30 / 28 / 8
Регистрация: 07.01.2017
Сообщений: 205
14.08.2017, 18:34 10
Потому что активити при повороте пересоздается.
1
Cannon1
2 / 2 / 2
Регистрация: 29.09.2012
Сообщений: 415
14.08.2017, 19:13  [ТС] 11
Спасибо.

А как делают чтобы при повороте экрана не пересоздавалось все заного? Или как правильно-то делать?

Нагуглил вот такую костыль заглушку в файл AndroidManifest.xml

XML
1
android:configChanges="orientation|screenSize"
Но пишут что много проблем потом может быть из-за этого костыля заглушки, так как лучше сделать?
0
Pablito
2812 / 2236 / 754
Регистрация: 12.05.2014
Сообщений: 7,821
Завершенные тесты: 1
14.08.2017, 19:25 12
если разметка для обеих ориентаций одна и та же то так и надо делать
иначе так делать не надо
0
14.08.2017, 19:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.08.2017, 19:25

Android Studio. Установка приложения на эмулятор. Application Installation Failed
С недавних пор перестали устанавливаться на эмулятор абсолютно все мои...

Android Studio - в проекте пропал класс после запуска приложения
Здравствуйте, писал приложение и потребовалось создать новый класс. Создал, и...

(Android studio, java) Ошибка при импорте библиотеки cannot resolve symbol android studio
Вот библиотека https://github.com/mik3y/usb-serial-for-android. Устанавливал...


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

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

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