0

私は B4A とプログラミング全般に非常に慣れていないと言うことから始めると思います。私はいくつかの非常に基本的な Java と HTML の経験を持っています。しかしそれだけです。私は basic4ppc も IDE の経験もありません。B4A を数日間使用していますが、こぶを乗り越えることができません。これが私の初心者の質問です:

  1. 多くのアクティビティ (20 ~ 30 以上) があると、アプリの速度が低下しますか? アクティビティが多いことのデメリットはありますか?
  2. デザイナーでスクロールする方法がわかりません。1列に25個のボタンがある画面を作ろうとしています。ただし、下にスクロールして下にボタンを追加することはできません。ボタンをプログラムで、必要な方法で (for ループを使用して) 追加することはできますが、このように実行時にビューを作成するのは正常ですか?
  3. アプリがすべてのデバイスで同じように見えるようにするにはどうすればよいでしょうか? 錠剤?エミュレーターに完全に収まるスクロール ビューがありますが、携帯電話 (droid x) では、スクロール ビューの下部が電話の下部まで引き伸ばされません。私はコードを使用します: scvScreen1.Initialize(100%y)。そうではありませんか?
  4. ユーザーがアプリから質問を送信できるように、編集テキストと [送信] ボタンで構成される電子メール画面があります。ただし、[送信] ボタンを押すと、「URI =」行に次のエラーが表示されます: "LastException java.lang.NumberFormatException: mailto:" コードは次の とおり
    です 。 =Test Email&body=" + edtHelpEmail.Text Dim Intent1 As Intent Intent1.Initialize(Intent1.ACTION_VIEW,Uri StartActivity(Intent1) End Sub または、デバイスの既定の電子メール プログラムを開く別の方法はありますか?






  5. 最後の質問ですが、エラー メッセージをクリップボードにコピーするにはどうすればよいですか?? IDE の右下にある赤いエラー メッセージを選択して ctrl-c を試しましたが、うまくいきませんでした。

  6. B4A で、永続的なデータを格納するための適切な方法は何ですか? 本当に保存する必要があるのは、いくつかの文字列だけです。派手なものはありません。これらの文字列はローカルに保存されます。AI は TinyDB を使用してこれを簡単にしました。
  7. デザイナーを使用するとき、ビューがすべてのデバイスの中央に配置されるようにするにはどうすればよいですか? たとえば、(ラベル、編集テキスト、ラベル)で構成される複数の行を持つ画面があります。そして、各行を中央揃えにします。プログラムでこれを行いますか?(ラベル、編集テキスト、ラベル) の各行をパネルに追加してから、コード センターでパネルを追加する必要があると考えています。これは正しいです?

今のところはこれだけですが、後でさらに多くの質問があると思います。

4

3 に答える 3

1

1) Android の全体的な考え方は、小さなコンポーネント、つまりアプリケーションが連携することです。そのため、多くのアクティビティを開くことを心配する必要はありません。Android では、バックグラウンドでメモリが適切に管理されています。

2) 確かに。それは私にはいいですね。できる限りレイアウト デザイナーを使用し、後で動的なものを追加します。コードのサイズとアクティビティの数のバランスを取ることがすべてです。

3) デザイナーには、「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 は、「CdIntent.bas」などのクラスの名前を含む Process_Globals で宣言するグローバル文字列です。

例外は、ログ画面にマゼンタで表示され、例外が発生したメソッド名とクラスとともに表示され、それらを追跡できます。

6) 「名前」と「値」と呼ばれる 2 つの TEXT 列を持つ、TabletSettings と呼ばれる SQLLite データベースにテーブルがあります。それはうまく機能し、最初からアプリで常にデータベースを利用できるようにするという (私が思うに) 良い習慣を身につけさせます。

7) 私は以前にこれを行ったことがないので、これについてあなたに戻ってきます. それまでは、B4A フォーラムhttp://www.basic4ppc.com/android/forum/threads/convert-integer-to-dip.18800/の次のスレッドが役立ちます。

于 2013-10-16T07:32:48.093 に答える
0
  1. アイテムがボタンである ListView または ScrollView を追加してみることができます。これは、そうでなければタブ付きビューを行う標準的な方法のようです。
于 2011-10-27T11:52:45.667 に答える
0

私はジムの主張に同意しますが、1に答えようとします.

私自身はアンドロイドは初めてですが、全体としてのアクティビティはアクティブなときにのみ実行されていることを理解しています。アプリを使用して継続的に何かを行っている場合を除き、一度に実行できるアクティビティは 1 つだけです。アクティビティの数は、何よりも使用可能な RAM に影響を与える可能性があります。最後に、いわば走るのではなく、最初に歩く価値があるかもしれませんが、1 つのアクティビティを試してから、複数のアクティビティを追加してみてください。

于 2011-10-27T11:47:55.917 に答える