一些初学者的问题

时间:2011-10-26 21:45:38

标签: basic4android

我想我首先要说的是我对B4A非常新,以及一般的编程。我有一些非常基本的java和html exp。但就是这样。我没有任何basic4ppc或任何IDE体验。已经使用B4A几天了,无法越过驼峰。这是我的noob问题:

  1. 有很多活动(20-30 +)会减慢应用程序的速度吗?有很多活动是不是有缺点?
  2. 我无法弄清楚如何滚动设计师。我正在尝试制作一个屏幕,在一列中有25个按钮。但是我无法向下滚动以在下面添加更多按钮。我能够以我想要的方式(使用for循环)以编程方式添加按钮,但是在运行时创建视图是否正常?
  3. 您如何确保您的应用在所有设备上看起来都一样?片?我有一个适合模拟器的滚动视图,但在我的手机(机器人x)上,滚动视图的底部没有伸展到手机的底部。我使用代码:scvScreen1.Initialize(100%y)。那不对吗?
  4. 我有一个电子邮件屏幕,其中包含一个edittext和一个发送按钮,以便用户可以从应用程序向我发送问题。但是Send按钮在'URI ='行上给出了这个错误:“LastException java.lang.NumberFormatException:mailto:”这里是代码:
    Sub btnSendEmail_Click
    Dim Uri As String
    Uri =“mailto:me@gmail.com?subject = Test Email& body =”+ edtHelpEmail.Text
    Dim Intent1作为意图
    Intent1.Initialize(Intent1.ACTION_VIEW,乌里
    StartActivity(Intent1)
    结束分
    或者是否有其他方法可以打开设备的默认电子邮件程序?

  5. 关于上一个问题,如何将错误消息复制到剪贴板?我选择了IDE右下角的红色错误消息并尝试了ctrl-c,但没有用。

  6. 在B4A中,存储持久数据的好方法是什么?我真正需要存储的是一些字符串。没有什么花哨。这些字符串将存储在本地。 AI通过使用TinyDB轻松实现了这一目标。
  7. 使用设计器时,如何确保视图以所有设备为中心?例如,我有一个屏幕,其中有几行由:(label,edittext,label)组成。我希望每一行都是中心对齐的。我是否按程序进行此操作?我想我必须将每一行(label,edittext,label)附加到面板,然后在代码中心附加面板。它是否正确?
  8. 这就是我现在所得到的,但我相信以后会有更多的问题。

3 个答案:

答案 0 :(得分:1)

1)android的整个想法是小组件,即Apps一起工作,所以不必担心打开很多活动。在Android的幕后,内存管理非常好。

2)当然。这听起来不错。尽可能多地使用布局设计器,然后再添加动态内容。这就是在代码大小和活动数量之间取得平衡。

3)在Designer中有一个名为“发送到UI云”的选项。这会将您的应用与多种屏幕尺寸进行比较您还可以在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:" & StrAddress & "?subject=" & StrSubject & "&body=" & 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: " & Ex.Message & " - Class: " & StrClass & " - Method: " & 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中声明的全局String 包含该类的名称,例如“CdIntent.bas”

然后在日志屏幕中以洋红色出现例外以及它们发生的方法名称和类,允许您回家。

6)我在一个名为TabletSettings的SQLLite数据库中有一个表,它有两个名为“Name”和“Value”的TEXT列。它运作良好,让你进入一个(我认为是一个)好习惯,从一开始就为你的应用程序提供数据库。

7)我会在此之前回复你,因为我之前没有这样做过。 在此之前,以下主题将在B4A论坛http://www.basic4ppc.com/android/forum/threads/convert-integer-to-dip.18800/

中为您提供帮助

答案 1 :(得分:0)

我同意吉姆的观点,但会尝试回答1。

我自己是Android的新手,但据我了解,活动总体上只在活动时运行。除非您使用该应用程序继续执行某些操作,否则一次只能执行一项活动。活动的数量可能比任何东西都更有影响。最后,可能值得先走,而不是跑步,但尝试一个,然后添加多个活动。

答案 2 :(得分:0)

  1. 你可以尝试添加一个ListView或ScrollView,其中的项目是按钮,这似乎是做事情的标准方式,否则就是标签视图。
相关问题