ParseExceptionをcatchしない

日付を扱う際にDate型にparseすることがあると思います。

そうした際に、ParseExceptionをtry/catchという警告が出ます。

→Unhandled exception: java.text.ParseException

 

上記エラーが発生し多場合は、
try/catchを追加してあげれば良いのですが
他にも対応が必要です。

今回は上記対応についてまとめたいと思います。

 

まず、parseする前に日付を指定のスタイルにします。


DateFormat dateFormat = DateFormat.getDateInstance();

このdateFormatに対して以下の処理を行ってあげることで、
その後、例外な日付が来てもParseExceptionをcatchしてくれます。

dateFormat.setLenient(false);

 

例外な日付が来ても、何も出来ないんだけどね。。
ログ出すぐらい??

 

以上

Junit4でActivityへアクセスする方法からボタンクリック等の確認方法までのまとめ

Activityの単体テストを行う際に、
必要となり忘れない為に記録しておきます。

 

<Activity起動方法>

まず、Activityへアクセスするために必要な@Ruleを定義します。

今回はサンプルActivityとしてTestActivity.javaを使用。
全てのTest(@Test)で定義が必要となる為、@Ruleに記載しています。


@Rule
public IntentsTestRule<TestActivity> mIntentsRule =
new IntentsTestRule<>(TestActivity.class, false, false);

 

次に実際にActivityを起動させます。Intent的な感じです。


Intent intent = new Intent();
TestActivity activity = mIntentsRule.launchActivity(intent);


上記を各々のTest(@Test)で記載してあげることで
試験を実施することが可能となります。

 


<ボタンクリック>

onView(withId(R.id.sample_button)).perform(click());


ボタンがクリックされる処理を行ってくれます。

 

<画面遷移先の確認>

intended(hasComponent(Test2Activity.class.getName()));


画面遷移した時に、意図したActivityに遷移出来ているかを確認できます。

 

<ボタンの状態を確認>

・活性状態
assertTrue(activity.findViewById(R.id.receipt).isEnabled());

・非活性状態
assertFalse(activity.findViewById(R.id.receipt).isEnabled());


ボタンの状態が活性状態か非活性状態かを確認できます。

 

<画像の表示状態を確認>

・表示状態
assertThat(((ImageView)activity.findViewById(R.id.test)).getDrawable().isVisible(), is(true));

・非表示状態
assertThat(((ImageView)activity.findViewById(R.id.test)).getDrawable().isVisible(), is(false));


ResourceのR.id.testに画像が表示されているか確認できます。
getDrawable()を変更することで様々な表示状態を確認することが可能です。

 


初めて単体テストコードを書くので
間違えていたり認識が甘いところがあります。

コメントくれたら嬉しいです。

1ヶ月前や後の日付を取得したい

今回は1ヶ月前や1ヶ月後の日付を
Calendarを使用し取得したいと思います。

 

まず、本日の日付を取得します。

Calendar calendar = Calendar.getInstance();

上記から月に対して"+1"か"-1"をします。


◆1ヶ月前

calendar.add(Calendar.MONTH, -1);

◆1ヶ月後

calendar.add(Calendar.MONTH, 1);


結果は以下で取得することが出来ます。
int month = calendar.get(Calendar.MONTH);

 

※ただ、ここで注意が必要です。

(普段考えることがあまりないと思いますが、)
本日が1月31日だった場合1ヶ月後はいつになるのでしょうか。

人によって其々だと思います。

 


上記の方法で1ヶ月後を求めた場合を以下にまとめました。

◆2018/01/31の1ヶ月後:2018/03/03

◆2018/02/28の1ヶ月後:2018/03/28

以上から、本日の日付が1ヶ月後に存在しない場合
+31日を行い繰り越しになります。

逆に存在する場合は繰り越しされずそのままの日付となります。

 

PJによって計算の仕方は変わると思うので、
注意して使用してみてください。

 

----------------------------------------------------

ちなみに、TargetSdkVersion26(Android8.0)から追加された
LocalDateTimeのplusMonthsは、
本日の日付が1ヶ月後に存在しない場合も
繰り越しせず月の最終日を設定してくれるそうです。

以下例。
◆2018/01/31の1ヵ月後:2018/02/28

◆2018/02/28の1ヵ月後:2018/02/28

----------------------------------------------------

【JAVA】あー!ビルドが通らない!✖️マークがとれない!

こんばんは。

最近会社に入ってきたBPさんの1年目の子が

早速この状況に陥っていました。

 

 

 

自分は開発してから日経ってるからこの現象をあまり気にしてなかったけど、

検索すると意外に皆さん引っかかってる。。

 

 

 

そんなこともあってまとめて見ます。

 

 

 

 

 

 

 

まず、以下のようなエラーが左下に表示されたとき!

 

f:id:asagon7314:20180207232030p:plain

 

<エラー文>

Error running app: Default Activity not found

<翻>

アプリの実行エラー: デフォルトのアクティビティが見つかりません

 

 

 

 

 

 

ManifestにはActivity設定してるし

JavaにもActivity設定してるのに・・?

そうなんです。エラー内容だけじゃ全然わからない!笑

 

 

 

 

 

 

原因はここでした。

AndroidManifest.xml

f:id:asagon7314:20180207232024p:plain

 

 

 

 

 

 

 

 

ちなみに私たちはこのエラーに2〜3時間ほど掛けてしまいました。。

 

はい、スペルミスです。

ミスしていてもエラーが全くでないのがmiso。。

 

怪しいと思ったらコピペ!大事です。

 

 

 

 

 

 

 

皆さんも注意してくださーい( ´_ゝ`)

 

【Android Studio】エラーValidates resource references inside Android XML files.が発生した場合の対応

AndroidStudio開発にて、 

Manifestファイルにactivityを追加したところ

以下のエラーが発生した。

 

'com.nitty.saplin.MainActivity' is not assignable to 'android.app.Activity'

Validates resource references inside Android XML files.

 

AndroidManifest.xml

f:id:asagon7314:20180106002750p:plain

 

MainActivity.java (Before)

f:id:asagon7314:20180106003027p:plain

 

エラー内容としてはactivityを追加したけど、

該当のファイルはActivityじゃないよ??ヽ(`Д´)ノ

 

とのこと。。

 

そのため、MainActivity.javaを以下に変更することで

問題解決!!あ〜単純(笑)

 

MainActivity.java (After)

f:id:asagon7314:20180106003153p:plain

 

 

さてさて開発を始めますか。