#basic4android
#basic4android
Вопрос:
Думаю, я начну с того, что скажу, что я очень новичок в B4A и в программировании в целом. У меня есть очень простой опыт работы с Java и html. но это все. У меня нет никакого basic4ppc или действительно какого-либо опыта работы с IDE. Уже несколько дней использую B4A и не могу справиться с трудностями. Вот мои вопросы для новичков:
- Замедляет ли приложение выполнение большого количества действий (20-30 )? Есть ли недостаток в большом количестве действий?
- Я не могу понять, как прокручивать в конструкторе. Я пытаюсь создать экран с 25 кнопками в 1 столбце. Однако я не могу прокрутить вниз, чтобы добавить дополнительные кнопки ниже. Я могу добавлять кнопки программно и так, как я хочу (используя цикл for), но нормально ли создавать представления во время выполнения таким образом?
- Как вы гарантируете, что ваше приложение выглядит одинаково на всех устройствах? Таблетки? У меня есть вид прокрутки, который идеально подходит для эмулятора, но на моем телефоне (droid x) нижняя часть вида прокрутки не растягивается до нижней части телефона. Я использую код: scvScreen1.Инициализируйте (100% y). Разве это не так?
-
У меня есть экран электронной почты, в котором есть edittext и кнопка отправки, чтобы пользователи могли отправлять мне вопросы из приложения. Однако кнопка отправки выдает мне эту ошибку в строке ‘URI =’: «LastException java.lang.NumberFormatException: mailto:» вот код:
Sub btnSendEmail_Click
Dim Uri как строка
Uri=»mailto:me@gmail.com?subject=Test Электронная почта и тело=» edtHelpEmail.Текст
Dim Intent1 как Intent
Intent1.Инициализировать(намерение 1.ACTION_VIEW, Uri
startActivity(Intent1)
End Sub
Или есть другой способ открыть почтовую программу устройства по умолчанию? -
Что касается последнего вопроса, как мне скопировать сообщения об ошибках в буфер обмена?? Я выбрал красное сообщение об ошибке в правом нижнем углу IDE и попробовал ctrl-c, но не сработало.
- Каков хороший метод хранения постоянных данных в B4A? Все, что мне действительно нужно сохранить, это несколько строк. Ничего особенного. Эти строки должны храниться локально. AI упростил это с помощью TinyDB.
- Как вы гарантируете, что ваши представления сосредоточены на всех устройствах при использовании конструктора? Например, у меня есть экран, состоящий из нескольких строк: (label, edittext, label). И я хочу, чтобы каждая строка была выровнена по центру. Делаю ли я это программно? Я думаю, мне пришлось бы добавлять каждую строку (label, edittext, label) на панель, затем в центре кода панели. Это правильно?
Это все, что у меня есть на данный момент, но я уверен, что позже будет еще много вопросов.
Комментарии:
1. Добро пожаловать в StackOverflow! Возможно, было бы лучше задать каждый из них как отдельные вопросы. В противном случае, если кто-то даст отличный ответ на часть 1, а другой человек даст отличный ответ на часть 2 и так далее, как вы решите, чей ответ принять?
Ответ №1:
1) Вся идея Android заключается в том, чтобы небольшие компоненты, то есть приложения, работали вместе, поэтому не нужно беспокоиться об открытии множества действий. Память очень хорошо управляется за кулисами в Android.
2) Конечно. Для меня это звучит нормально. Используйте конструктор макетов столько, сколько сможете, а затем добавьте динамический материал позже. Все дело в том, чтобы найти баланс между размером вашего кода и количеством действий.
3) В конструкторе есть опция под названием «Отправить в облако пользовательского интерфейса». Это сравнивает ваше приложение по нескольким размерам экрана. Вы также можете масштабировать свой дизайн и программно изменять размер определенных элементов управления в вашем приложении в жизненном цикле Activity_Create
4) То, что вы делаете, почти правильно. Я исправил ваш код:
Sub MailTo(StrAddress As String, StrSubject As String, StrBody As String)
Dim StrMethod As String = "Sub MailTo(StrAddress As String, StrSubject As String, StrBody As String)"
Try
Dim StrUri As String
StrUri = "mailto:" amp; StrAddress amp; "?subject=" amp; StrSubject amp; "amp;body=" amp; StrBody
Dim Intent As Intent
Intent.Initialize(Intent.ACTION_VIEW, StrUri)
StartActivity(Intent)
Catch
If BlnLoudExceptions Then CdException.Show(StrClass, StrMethod, LastException)
End Try
End Sub
У меня, как правило, есть модуль кода под названием CdIntent.bas для этих функций, поскольку он поддерживает организацию проекта и упрощает реализацию одних и тех же функций в разных проектах.
Затем для вызова вы бы использовали
CdIntent.MailTo("me@yes.no", "Subject!", "Body!")
5) У меня есть файл с именем CdException.bas
Sub Process_Globals
'These global variables will be declared once when the application starts.
'These variables can be accessed from all modules.
End Sub
Sub Show(StrClass As String, StrMethod As String, Ex As Exception)
LogColor("Exception: " amp; Ex.Message amp; " - Class: " amp; StrClass amp; " - Method: " amp; StrMethod, Colors.Magenta)
End Sub
а затем оберните функции следующим образом:
Sub FunctionName(...Parameters...) as Int
Dim StrMethod As String = "Sub Sleep(LngMilliseconds As Long)"
Dim IntResult As Int = 0
Try
[code here inc. IntResult = ???]
Catch
If BlnLoudExceptions Then CdException.Show(StrClass, StrMethod, LastException)
End Try
Return IntResult
End Sub
- BlnLoudExceptions — это глобальное логическое значение, которое вы бы объявили в
Process_Globals, которые вы можете включить при отключении журналов исключений. - StrClass — это глобальная строка, которую вы должны объявить в Process_Globals, содержащая имя класса, например, «CdIntent.bas»
Затем исключения отображаются пурпурным цветом на экране журнала вместе с именем метода и классом, в котором они произошли, что позволяет вам ознакомиться с ними.
6) У меня есть таблица в базе данных SQLLite под названием TabletSettings, в которой есть два текстовых столбца с именами ‘Name’ и ‘Value’. Это работает хорошо и дает вам (как я думаю,) хорошую привычку всегда иметь базу данных, доступную для вашего приложения с самого начала.
7) Я вернусь к вам по этому вопросу, поскольку я не делал этого раньше. До тех пор следующая тема поможет вам на форуме B4A http://www.basic4ppc.com/android/forum/threads/convert-integer-to-dip.18800 /
Ответ №2:
Я согласен с точкой зрения Джима, но попытаюсь ответить на 1.
Я сам новичок в Android, но, насколько я понимаю, действия в целом выполняются только тогда, когда они активны. Если вы не используете приложение для непрерывного выполнения чего-либо, одновременно выполняется только одно действие. Количество действий, вероятно, больше всего повлияет на доступную оперативную память. Наконец, возможно, стоит сначала пройтись, а не бегать, так сказать, но попробовать одно, а затем добавить несколько действий.
Ответ №3:
- Вы могли бы попробовать добавить ListView или ScrollView, где элементы являются кнопками, похоже, это стандартный способ выполнения действий, в противном случае — представление с вкладками.