Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
 
msgusa
6 / 6 / 3
Регистрация: 29.06.2011
Сообщений: 164
#1

Перенос Java-кода на платформу Android - Программирование Android

02.08.2016, 08:59. Просмотров 1066. Ответов 28
Метки нет (Все метки)

Всем доброе утро!
Есть неплохой код.
Но мне оказалось этого мало и хочу перенести на платформу Android с помощью Android Studio.
Подскажите пожалуйста как перенести?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.08.2016, 08:59
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Перенос Java-кода на платформу Android (Программирование Android):

Перенос кода клиент/сервера на Android - Программирование Android
Здравствуйте =) Начал изучать андроид и возникла такая проблема, а именно перенос Java кода в код приложения У меня есть работающий код...

Ошибка: Caused by Android java.lang.ClassCastException: android.app.Application cannot be cast - Программирование Android
Здравствуйте. Очень нужен ваш совет. При запуске приложения появляется ошибка: Caused by: java.lang.ClassCastException:...

Перенос проекта с IOS на Android - Программирование Android
Добрый день. Есть готовый проект для ios. Подскажите, есть ли вариант что-либо импортировать или же переписать код ?

Перенос проекта в Android Studio - Программирование Android
Добрый день! Никак не могу найти как перенести проект со студии на одном компьютере на студию на другом. Возможно ли это? Влияет ли...

Перенос проекта из Eclipse в Android Studio - Программирование Android
У меня есть простенький чат на Java, проблема в том, что мне нужно перенести клиентскую часть на Андройд... Пробовал на Eclipse ставить...

Android studio, перенос строки в текстовом редакторе - Программирование Android
Добрый день. не знаю то ли так было с самого начала,то ли сам напортачил, но как факт: у меня в Android studio при редактировании...

28
OlegJV
103 / 103 / 28
Регистрация: 13.03.2016
Сообщений: 474
02.08.2016, 10:01 #2
Прочитать про класс Timer в андроид.

Добавлено через 21 секунду
Или CountdownTimer
0
Vladimir93
53 / 53 / 8
Регистрация: 28.06.2015
Сообщений: 219
02.08.2016, 11:27 #3
А что вы хотите перенести, таймер, программу? Для таймера у Андроида есть свои методы. Код перенести можно, а интерфейс нужно новый делать.
0
Pablito
2614 / 2097 / 651
Регистрация: 12.05.2014
Сообщений: 7,347
Завершенные тесты: 1
02.08.2016, 12:08 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
делов на 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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import android.os.Bundle;
import android.os.CountDownTimer;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
 
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
 
    private Button startBtn;
    private TextView counterTv;
 
    private final CountDownTimer countDownTimer = new CountDownTimer(10000, 1000) {
        @Override
        public void onTick(long l) {
            counterTv.setText(String.valueOf(l / 1000));
        }
 
        @Override
        public void onFinish() {
            counterTv.setText("Done!");
            startBtn.setEnabled(true);
        }
    };
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        startBtn = (Button) findViewById(R.id.startBtn);
        startBtn.setOnClickListener(this);
        counterTv = (TextView) findViewById(R.id.counterTv);
    }
 
    @Override
    public void onClick(final View view) {
        startBtn.setEnabled(false);
        countDownTimer.start();
    }
 
}

разметка активити, activity_main.xml
Кликните здесь для просмотра всего текста
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
 
    <TextView
        android:id="@+id/counterTv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:textAppearance="@style/TextAppearance.AppCompat.Display4" />
 
    <Button
        android:id="@+id/startBtn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/counterTv"
        android:layout_centerHorizontal="true"
        android:text="START" />
 
</RelativeLayout>
1
msgusa
6 / 6 / 3
Регистрация: 29.06.2011
Сообщений: 164
02.08.2016, 14:31  [ТС] #5
OlegJV, спасибо, почитаю!

Vladimir93, хочу перенести все.

Паблито, спасибо большое, но... я совсем не узнаю тот код. Вы реализовали свой код на основе того, что показал, или же все-таки придется все переписывать специально для Андроида?
Дело в том, что логика той программы мне полностью понятна, а ваша не совсем. Например, что за аннотации @Override? В тех программах без них обошлось.
И потом, ту программу я немножко изменил и добавил свое. Поэтому для первоначального понимания, думаю, мне было бы легче ориентироваться на тот "скелет" кода.
0
Pablito
2614 / 2097 / 651
Регистрация: 12.05.2014
Сообщений: 7,347
Завершенные тесты: 1
02.08.2016, 14:35 #6
Цитата Сообщение от msgusa Посмотреть сообщение
Например, что за аннотации @Override?
гугл заблокирован?
0
OlegJV
103 / 103 / 28
Регистрация: 13.03.2016
Сообщений: 474
02.08.2016, 15:01 #7
Код Паблито предельно ясен с точки зрения Андроид-программирования. Если есть желание писать (переносить) программы под Андроид, придется кое-что почитать, автоматом не прокатит. Смысл (повторюсь) понятен полностью - при нажатии кнопки startBtn срабатывает метод onClick, в котором запускается таймер на 10 секунд с интервалами 1 сек (CountDownTimer(10000, 1000)). Каждую секунду (второй параметр в конструкторе CountDownTimer) срабатывает метод onTick(long l), в котором в текстовое поле выводится оставшееся время. По окончании работы таймера срабатывает метод onFinish(). Все. При желании в эти методы можно добавлять что угодно. @Override - переопределение метода родительского класса. Что еще непонятно?
1
msgusa
6 / 6 / 3
Регистрация: 29.06.2011
Сообщений: 164
02.08.2016, 16:43  [ТС] #8
Хотел немножко схалтурить там, где это возможно. Извините за невежество)
Да, еще я не хотел докучать вас вопросами. Ну, раз так...

В целом, интуитивно понимаю что делает программка.
Получается, что MainActivity - это как бы главный класс, с котором и начинается выполнение программы. Вопрос, можно ли менять это название как-нибудь по другому? (думаю, что нет). Тогда получается, что у каждой другой программы, будет главный класс с одним и тем же названием.

Потом я не обнаружил главного метода public static void main. Реализуется ли он как-нибудь?

В той программе, есть конструктор:
Java
1
2
3
4
5
6
7
public TimerDemo() {
        setTitle("TimerDemo");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
        setLayout(new FlowLayout());
        timeLabel = new JLabel();
 ......
А можно ли его и здесь как-нибудь реализовать? Скажем, что-то наподобие public MainActivity() {...}

Потом, я не вижу внутренних классов, реализующих интерфейс ActionListener. Можно ли мне как-нибудь переписать код и поместить в класс MainActivity {}, классы типа class TimerTick implements ActionListener {...} ?

И еще один нюанс, связанный с таймером. Можно ли переписать строчку кода Паблито на что-то подобное:
Java
1
timer = new Timer(1000, new TimerTick());
?

Т.е. вынести обработчик события во внутренний класс, и дальше с ним работать там.

Пока все Пожалуйста, ответьте на мои вопросы, хотя бы так: "Да", "Нет", чтобы знал, что это возможно и что я просто неправильно что-то делаю.
0
OlegJV
103 / 103 / 28
Регистрация: 13.03.2016
Сообщений: 474
02.08.2016, 17:15 #9
MainActivity это типа окна в Windows. Название можно менять. Активити в программе может быть несколько. Метод onCreate это с натяжкой можно назвать конструктором. new TimerTick это ересь.
0
akyma40
16 / 15 / 3
Регистрация: 20.05.2015
Сообщений: 115
02.08.2016, 18:59 #10
msgusa, MainActivity это класс наследник Activity. Название менять можно, но при создании такого класса (перемена названия класса в файле или самого файла вызовет ошибку в IDE). public static void main не нужен, в Android есть такая штука как манифест, в ней пишутся строки интент фильтра и при запуске приложения будет запущено то активити, для которого написан этот интент фильтр. Также нужно каждое запускаемое активити прописывать в манифесте, точнее то, что оно может быть запущено (специальные строки). Конструктор можно сделать для любого класса (это тот же java). Все тяжелые операции в андройд обязательно нужно помещать в другой поток.
0
Vladimir93
53 / 53 / 8
Регистрация: 28.06.2015
Сообщений: 219
03.08.2016, 09:52 #11
msgusa,
Да все можно. Андроид практически полностью "поддерживает" Java ( синтаксис, методы, классы, конструкторы, интерфейсы), за исключением UI. Андроид имеет свой. Ну и некоторые реализации у Андроида тоже свои.
Насчет запуска тоже уже сказали, по сути, вы можете запустить любую активность (даже другого приложения), которую укажете в манифесте(важная часть Андроид разработок, изучите)

Добавлено через 6 минут
Правила для имен такие же как и Java, имя Активити должно совпадать с именем файла. Переименовали активность, переименуйте файл, и все что связно, с этой активностью
0
msgusa
6 / 6 / 3
Регистрация: 29.06.2011
Сообщений: 164
06.08.2016, 18:33  [ТС] #12
Программа не сработала.
Пишет, что
Java
1
error: package R does not exist
0
OlegJV
103 / 103 / 28
Регистрация: 13.03.2016
Сообщений: 474
06.08.2016, 19:08 #13
Как-то не очень содержательно. Какая программа, в каком месте не сработала?
0
msgusa
6 / 6 / 3
Регистрация: 29.06.2011
Сообщений: 164
06.08.2016, 19:13  [ТС] #14
Извините, я думал это очевидная ошибка.
Ошибку высвечивает здесь:
Java
1
2
3
4
        setContentView(R.layout.activity_main);
        startBtn = (Button) findViewById(R.id.startBtn);
        startBtn.setOnClickListener(this);
        counterTv = (TextView) findViewById(R.id.counterTv);
Видимо, что-то не нравится в путях. Пытаюсь разобраться, но пока по прежнему не хочет работать.

И еще. Не знаю важно ли.
Я создал новый модуль. И просто скопировал код активити и разметку активити. Чтоб хотя б посмотреть. И еще. Рядом с зеленым треугольником запуска приложения есть названия в списке. Так вот, андроид в названии "timerexample" перечеркнут красным крестиком.. Я не знаю, что это может означать.
0
OlegJV
103 / 103 / 28
Регистрация: 13.03.2016
Сообщений: 474
06.08.2016, 19:15 #15
А код разметки можно посмотреть? Есть там эти самые R.id.startBtn и R.id.counterTv?
0
06.08.2016, 19:15
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.08.2016, 19:15
Привет! Вот еще темы с ответами:

Java на Android - Программирование Android
Чисто теоретический вопрос. Почему Григорий Корнеев в своих лекциях http://www.lektorium.tv/lecture/?id=13356 говорит что в Android не...

Java для Android - Программирование Android
Добрый день ! Учу андроид примерно 4 месяца, сделал пару игр (в основе лежит пальцетыкалка ), сейчас думаю идти дальше ( что бы можно...

Синхронизация Android и ПК на Java - Программирование Android
Здравствуйте уважаемые форумчане. Я студентка и только начинаю изучать Java. Преподаватель предложил в качестве курсовой написать на...

Android/Java + checkbox c if - Программирование Android
Всем привет. Недавно начал изучать андроид и возник такой вопрос. Есть три cheсkbox и кнопка button . Хочу сделать так что б при выборе...


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

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

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