2011-10-26 197 views
0

我想我会开始说我对B4A非常陌生,对一般的编程也是如此。我有一些非常基本的java和html exp。但就是这样。我没有任何basic4ppc或真正的IDE经验。现在已经使用B4A几天了,无法越过驼峰。这里是我的noob问题:一些初学者问题

  1. 有很多活动(20-30 +)减慢应用程序?有很多活动有缺点吗?
  2. 我无法弄清楚如何在设计器中滚动。我正在试图制作一个屏幕,其中1列中有25个按钮。不过,我无法向下滚动以添加更多按钮。我可以按照我想要的方式(使用for循环)以编程方式添加按钮,但在运行时创建视图是否正常?
  3. 您如何确保您的应用在所有设备上看起来都一样?片?我有一个适合模拟器完美的滚动视图,但在我的手机(droid 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?受试者=测试电子邮件&体=” + edtHelpEmail.Text
    昏暗Intent1作为意图
    Intent1.Initialize(Intent1.ACTION_VIEW,乌里
    StartActivity(Intent1)
    结束子
    或者有另一种方式打开设备的默认电子邮件程序?

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

  6. 在B4A中,什么是存储持久数据的好方法?我真正需要存储的是一些字符串。没有什么花哨。这些字符串将被本地存储。 AI通过使用TinyDB使这变得简单。
  7. 使用设计师时,您如何确保您的视图集中在所有设备上?例如,我有一个由几行组成的屏幕:(label,edittext,label)。我希望每一行都是中心对齐的。我是否按程序执行此操作?我想我必须将每行(标签,edittext,标签)追加到面板,然后在面板的代码中心。它是否正确?

这就是我现在所得到的,但我相信稍后会有更多的问题。

+1

欢迎使用StackOverflow!将每个问题作为单独的问题进行讨论可能会更好。否则,如果某人给出了第1部分的很好答案,而另一个人对第2部分给出了很好的答案等,那么您将如何决定接受谁的答案? –

回答

0

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

我是新到Android自己但据我所知在整体上它的活动仅在运行时有效。除非您使用应用程序连续执行某项操作,否则一次只能执行一项活动。活动的数量可能会更多地影响公羊。最后,可能值得先走,而不是跑这么说,但尝试单一,然后添加多个活动。

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

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

2)当然。这对我来说听起来很好。尽可能多地使用布局设计器,然后再添加动态内容。这完全取决于代码的大小和活动的数量之间的平衡。

3)在Designer中,有一个选项叫做'Send to UI Cloud'。这比较你的应用程序在多个屏幕尺寸。您也可以缩放您的设计,并在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("[email protected]", "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 中声明该字符串,其中包含该类的名称,例如“CdIntent.bas”

异常然后出现在洋红色的日志屏幕中,以及它们出现的方法名称和类别,以便您可以将它们置于其上。

6)我有一个名为TabletSettings的SQLLite数据库中有一个表,它有两个名为'Name'和'Value'的TEXT柱。它运行良好,让你进入(我认为是)始终有一个数据库可用于你的应用程序从一开始的好习惯。

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