忍者ブログ

メモ帳

卒業制作中におきた困ったことと解決策まで載せられたらいいな   解決時参照したページのメモ帳  (就職先探し中)

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

ボタンを配列に入れる

似た様な作業をするんだから、いちいちifで分岐させたり、地の文で書くんじゃなくて
配列に入れてやってforでどばーっと書きたい。

そんなときに詰まった落とし穴。

	Button mb1,mb2,mb3,mb4,mb5,mb6;
		mb1 = (Button)findViewById(R.id.m_1);
		mb2 = (Button)findViewById(R.id.m_2);
		mb3 = (Button)findViewById(R.id.m_3);
		mb4 = (Button)findViewById(R.id.m_4);
		mb5 = (Button)findViewById(R.id.m_5);
		mb6 = (Button)findViewById(R.id.m_6);
これを
	Button[] mb;
		mb[0] = (Button)findViewById(R.id.m_1);
		mb[1] = (Button)findViewById(R.id.m_2);
		mb[2] = (Button)findViewById(R.id.m_3);
		mb[3] = (Button)findViewById(R.id.m_4);
		mb[4] = (Button)findViewById(R.id.m_5);
		mb[5] = (Button)findViewById(R.id.m_6);
に書き換えたかったのだが、このままでは null がでて怒られる。

答えは簡単
一行足りなかったのだ。
	Button[] mb;
		mb = new Button[6];
		mb[0] = (Button)findViewById(R.id.m_1);
		mb[1] = (Button)findViewById(R.id.m_2);
		mb[2] = (Button)findViewById(R.id.m_3);
		mb[3] = (Button)findViewById(R.id.m_4);
		mb[4] = (Button)findViewById(R.id.m_5);
		mb[5] = (Button)findViewById(R.id.m_6);
簡単なのだが気付くのに酷く時間がかかった。凹む。

他に配列に入れたいものといえば、SharedPreferenceの返答なのだが、
どうやらいけるらしい。
Keyをxmlファイルのstring-arrayに入れておくと便利。


参考サイト

Android コントロール(ウィジェット)配列『youinfo』
[参照日:2013/11/16]
PR

TextViewに書かれたURLをブラウザで開く

自動アップデートとか面倒なのでより簡単かなと考えまして、
サポートページとか作ってやろうと思いました。

アプリ内ではバージョン情報とかと一緒にサポートページへ
リンク貼っておくことにしました。

layout の xmlファイル
特定のTextViewの属性をいじります。

android:text
URLを入力(string.xmlのなかにURL入れて、呼び出してもOK)して
android:autoLink
にお望みの属性を追加!

今回はブラウザを開いてWebページを見たいので
android:autoLink="web"
と入力すれば後はAndroidがやってくれます。



メールとか電話番号だった場合は別の属性を使えば良いみたい。
あと、住所にはmapを利用できるそうな。

参考サイト

TextViewにWebサイトへのリンクを作成する」『TechBooster』
[参照日:2013/11/13]

getSharedPreference の心配

わりとしょっちゅうやらかすので覚え書き。

SharedPreferences を使うときは、読み出す手順は簡単だけど保存の時に一つ手間がいる。

globals.wName[globals.MONSTER_CODE] には String が入っております

pref = getSharedPreferences("MonsterEgg",Activity.MODE_PRIVATE);
spEditor = pref.edit();

ここまで事前定義。

spEditor.putBoolean(globals.wName[globals.MONSTER_CODE], true);
Boolean ko = pref.getBoolean(globals.wName[globals.MONSTER_CODE],false); Log.v(tag,String.valueOf(ko));

って書いているとBoolean koの中に ture って入っていて欲しいのに
どうしてLogCatは false って言うの?

falseは初期値に入っている。つまり、保存できていない??

悩むこと数日……

保存するときは
spEditor.commit();
を後につけないとSharedPreferencesの中には保存されてくれないのでした。

デバッグ用にgetするときとかよく忘れてcomimtする前に読み込んだりしてます……

完成版
spEditor.putBoolean(globals.wName[globals.MONSTER_CODE], true);
spEditor.commit();
Boolean ko = pref.getBoolean(globals.wName[globals.MONSTER_CODE],false); Log.v(tag,String.valueOf(ko));


これならちゃんと true が返ってきます 保存したとおり!

LogCatが不意に動かなくなる

eclipse を使って実機の様子をうかがう為にLogCatを使う訳なんですが、
ふとしたときにLogCatが動かなくなるんです。

解決策が見つかったので覚え書き

[パースペクティブを開く]から[DDMS] を選択
左の方に[Devices]タブが現れると思うので対象の実機を選択した状態で
下画像の丸印で囲んだボタンをPush!


赤丸が付いているときはLogCatが止まっている証拠。
逆に赤丸ではなく灰色丸の時はここが原因ではないみたい……

接続をチェックし直すべきか……

ちなみに、丸印の右「フラッシュの光るカメラマーク」を押すと実機のスクショがとれた。
古いAndroidはスクショ機能が付いてないので意外と便利かも

せっかくなので貼ってみる

早く完成させなくちゃ


参考サイト:
Kazzzの日記 [参照日:2013/11/06]


ブログ書くのにctrl+Sをしょっちゅう押してめんどくさいことになってる

Android Project にC/C++ 要素を追加する

気を取り直して、今までぼちぼちと作っていたアンドロイドプロジェクトにOpenCVを導入しようとすると、
プロパティに「C/C++ Build」の項目がない!!

EclipseでのC/C++ Buildの出し方を探すが、なんかこの質問に対する回答の2番目がそれっぽい……

http://stackoverflow.com/questions/9242768/eclipse-c-c-build-builder-settings-page-is-disabled-cant-change-settings

「eclipse: c/c++ build / builder settings page is disabled, can't change settings」『stack Overflow』
[参照日:2013/08/15]

この回答の通りにやってもわからなかったが、
ヒントは掴めた。

・実際にやったことが以下の手順
Project Exploreでいじりたいプロジェクトを選択→右クリック→【New】→【Convert to a C/C++ Project (Adds C/C++ Nature)】
画面下半分【ProjectOption】で左半分【ProjectType】が【Makefile project】になっている事を確認し、Finish!

無事にいじってるプロジェクトのプロパティにC/C++ Buildがでたよ!

プレアデスで日本語化している場合は、上記を参考程度に勘を働かせよう。
勘やひらめきは経験に基づくものらしいわ。
ただのいい加減も、知識と経験があれば無意識に正しい方向へと導かれるんだろうなあ

プロフィール

HN:
漣 時雨
性別:
非公開

P R