ともちゃんのアプリ開発日記

組込みC言語プログラマだったともちゃんが、四苦八苦しながら、AndroidのJAVA/Kotlin、iOSのSwiftUIを習得して行きます。ともちゃんの備忘録も兼ねています。

Viewの下位のViewのデータを参照する

Viewの下位のViewのデータを参照する方法です。

ViewGroup viewGroup = (ViewGroup) view;
int viewCount = viewGroup.getChildCount();
if (viewCount > 0) {
TextView childView=(TextView) viewGroup.getChildAt(0);
String strDate = childView.getText().toString();
}

 

viewをViewGroupとしてタイプキャストし、1つ目の子供のViewを

  viewGroup.getChildAt(0)

で参照しています。

 

EditTextの下線の色を変える

EditTextの下線の色を変える。

 

[1] Styles.xml

<resources>
<style name="EditTextColorControl">
<item name="colorControlNormal">@color/colorUnderLineNormal</item>
<item name="colorControlActivated">@color/colorUnderLineActivated</item>
</style>
</resources>

 

colorControlNormal:通常時の色

colorControlActivated:フォーカスが当たった時の色

 

[2] colors.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorUnderLineNormal">#C0C0C0</color>
<color name="colorUnderLineActivated">#FF4081</color>
</resources>

 

 

[3] レイアウトのxml

<EditText
android:layout_width="match_parent"
android:layout_height="100dp"
android:inputType="textMultiLine"
android:ems="10"
android:id="@+id/editTextMailText"
android:textAppearance="?android:attr/textAppearanceSmall"
android:gravity="top|start"
android:theme="@style/EditTextColorControl"/>

 

 android:themeで[1]で設定したスタイルを使用しています。

 

Playストアのアプリのページを表示する

評価のために、Playストアのアプリのページを表示したいことがあります。

以下の様にします。

String packageName = getPackageName();
Uri uri = Uri.parse("market://details?id=" + packageName);
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);

 

 

Androidの通知LEDが点灯(点滅)しない!!

Androidの仕様で、スクリーンがONの時は、通知LEDは点灯しないそうです。

確かに!!

スクリーンを点けていた!!

通知LEDは、スクリーンがOFFの時の通知手段なので、スクリーンがONの時は点灯しない仕様なんだそうだ。

 

Androidのアプリ内購入のテスト用アカウントの追加

Androidのアプリ内購入の開発では、テスト用アカウントは開発用アカウントとは別に作らなければなりません。開発用アカウントではサンドボックスデバッグはできても、実際の販売形態でのテストができないのです。

私は、

  • メイン機種:Android 5.1.1、開発者用のアカウント、販売形態でのテスト不可
  • 開発用機種:Android 4.1.1、テスト用のアカウント、販売形態でのテスト可

に設定していたのですが、Android 5.1.1でも販売形態でのテストをする必要があります。

 

そこで、色々試した結果、端末を初期化せずにメイン機種にテスト用アカウントを追加し、販売形態でのテストに成功しました。

  1. メイン機種に、既存のテスト用アカウントを追加する。これは端末で「設定」→「アカウント」→「アカウントの追加」→「Google」→「端末のロックNoの入力(設定されていれば)」→「メールアドレス」に既存のテスト用アカウントのメールアドレスを入力する→・・・で出来ます。
  2. Playストアを起動し、先ほど追加したテスト用アカウントに切り替えます。
  3. Playストアでベータ公開されている開発中のアプリを選択しインストールする。

こうすることで、インストールしたベータ公開アプリはテスト用アカウントに紐づけられます。

 

インターネットで調べると「課金アカウントを切り替えるためには端末を初期化しないといけない」と書いてありますが、上記で端末の初期化は回避できます。

 

動作確認機種:auのDIGNO rafre KYV36、Android 5.1.1

 

 

 

SQLiteデータベースの更新

SQLiteデータベースの更新は、update()を使用します。

String whereClause = "_id=" + String.valueOf(id);

ContentValues values = new ContentValues();
values.put("date", date);
values.put("kind", kind);
values.put("money", money);
values.put("category", category);
values.put("item", item);
values.put("memo", memo);
mydb.update("pocket_money_table", values, whereClause, null);

 

 

ポップアップウィンドウでスピナーを使用する

ポップアップウィンドウでスピナーを使うと、例外で落ちることがあります。

その場合、XMLのスピナーの属性に以下を追加します。

android:spinnerMode="dialog"

 

 これにより、スピナーが別ウィンドウで開くようになります。