忍者ブログ
[PR]
×

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



2026/04/05 13:32 |
買ったものリスト 2010/09/19

実績66666記念。
20100918-66666gates.jpg


ジゼル・アラン1 笠井 スイ
☆☆☆☆

いやあなんだ、こういう絵柄に弱いのか俺。
というか眉毛に。
世間知らずで好奇心一杯なお嬢様と、世間育ちでスレていて身分違いの成年の微妙な凸凹コンビが始める何でも屋、という日常を切り取った一話完結連作。
煙突掃除できちんと汚れいっぱいになるあたりがいいですな。

しかしアランウェイクのアランは名前なのにジゼルアランのアランは名字なのな。
シュナイダー・ベルモンドとコーネル・ラインハルト思い出したわ。


黒い森 折原 一
☆☆

両表・袋綴じと言えば倒錯の帰結です。
あれはもうねじってひねってとんでもないことになってた作品でしたが、三部作の上に新書だったのでかなりの量がありました。
本作は文庫サイズでサイズもさほど厚くないなのでそこまで混乱するようなことにはなってないだろうと読み始める。

読み終わる。
アレはそんなに大きくもないし丸くもないしそこまで重くもないはずなんだが。
そのせいでアレの正体が完全にわかりませんでした。

てか、折原一らしいオチが何もなかったんだが。
ツアーの目的は相当早い段階で想像がつくし、トリックもいつものやつだからすぐにわかるし。
あと解説が微妙。

あと、結局寺島はなんだったんだ?


神のみぞ知るセカイ10
☆☆☆☆

「もう少しで転生できる所でした」
子供に転生するとか言ってなかったっけ?

一番かっこいい結編終了。
個人的にはちょっと微妙な檜編スタート。

ハンバーガー250個でおよそ25000円、大概な金額だな。
手で掴めないのなら口に投げ入れてもすり抜けるのではないだろうかそこんとこどうなんだ。
てか、結局食べてないのか?
あとあの角度だとスカートの中何も履いてないのが丸見えだな。

そういえばDVDまだ見てなかった。


荒川アンダーザブリッジ8 中村 光
☆☆☆

高井と島崎はもういいから。
相変わらず電波ばっかりで読んでるときはそれなりに突っ込めるんだが、読み終わったら何も残らないのはストーリーが微塵も進まないせいだ。
完全にギャグものにするかストーリーを追っていくかどちらかにしてほしい。
何気に鳥は荒川河川敷外を汚染している唯一の例ではないか?


ファミ通 Xbox (エックスボックス) 2010年 10月号

ゲハのどこかのスレでムネタツのtwitterをコピペしてたのを見かけたので買ってみた。
字が小さすぎ。
日本じゃ死に体の360に一体どうしてここまで書くことがあるのか不思議なくらい濃い雑誌でした。
11月号はさらにとんでもないことになりそうだ。

PR


2010/09/19 20:38 | Comments(0) | TrackBack() | 買ったもの
今週の実績 2010/09/19
2010/09/18の実績

モダン・ウォーフェア2
熟練兵 30G
最低でも10個のスペシャルオプスミッションで、それぞれ3つすべての星を獲得する。

デスペラード 10G
シングルプレイヤーまたはスペシャルオプスで、5種類の武器またはアタッチメントを使用し連続で5人の敵を倒す。

特技兵 30G
スペシャルオプスで30個の星を獲得する。

ジャガーノート 10G
スペシャルオプスでジャガーノートを殺す。

Space Invaders IG
HIGH SCORE OF 10,000,000 10G
ハイスコアが10000000に達しました。

CLASSIC UFO HUNTER 10G
ステージ0のUFOを撃墜しました。

KOF SKY STAGE
KOF 空へ 10G
飛翔成功!

ブラザー イン アームズ HH
1944年9月 50G
マーケットガーデン作戦の記念日に「ブラザーインアームズ・ヘルズハイウェイ」をプレイした

2010/09/17の実績

モダン・ウォーフェア2
作戦遂行 20G
最低でも5個のスペシャルオプスミッションで、それぞれ3つすべての星を獲得する。

ブラックジャック 20G
スペシャルオプスで21個の星を獲得する。

不屈の闘志 10G
スペシャルオプスでダウン状態のまま、連続で4人の敵を倒す。

限界突破 20G
11個のスペシャルオプスで、それぞれ最低1個の星を獲得する。

チャーリーは波に乗った 20G
スペシャルオプスで8個の星を獲得する。

2010/09/14の実績

モダン・ウォーフェア2
ホテルブラボー 20G
スペシャルオプスで4個の星を獲得する。

すべての石を裏返せ 10G
敵の軍事情報を45個入手する。

2010/09/13の実績

モダン・ウォーフェア2
短い旅路 10G
敵の持つ軍事情報を22個集める。
ガンマン 10G
シングルプレイヤーもしくはスペシャルオプスにおいて、デュアル武器を使って連続で10人の敵を倒す。

2010/09/12の実績

モダン・ウォーフェア2
Mass Effect 殊勲章 25G
エデン プライムをクリアした


2010/09/19 18:02 | Comments(0) | TrackBack() | 実績
地球防衛軍オワタ\(^o^)/


葬式会場は何処ですか…


orz


2010/09/18 03:37 | Comments(0) | TrackBack() | ゲーム
Android2.2 名刺管理アプリケーションを作ってみる5日目その9
http://codezine.jp/article/detail/4842?p=4

前回までで「一覧」「参照」「登録」各画面の実装が一通り終了しました。
サンプルでは早々に次に進んでしまいますが、実はこの実装にはひとつ問題点があります。

「名刺一覧画面→新規→削除→OK」
と遷移するとエラーになります。

BizCardDao.delete()の実装はこのようになっています。
    public void delete(BizCard bizCard) {
        SQLiteDatabase db = helper.getWritableDatabase();
        try {
            db.delete( BizCard.TABLE_NAME, BizCard.COLUMN_ID + "=?", new String[]{ String.valueOf( bizCard.getRowid())});
        } finally {
            db.close();
        }
    }
呼び出し側はこうです
	BizCardDao dao = new BizCardDao( RegistActivity.this);
	dao.delete( bizCard);
このbizCard、新規登録だとIDが無いので、BizCardDao.deleteで例外が発生するのです。

ということでBizCardDaoを変更。
    public void delete(BizCard bizCard) {
        SQLiteDatabase db = helper.getWritableDatabase();
        try {
            db.delete( BizCard.TABLE_NAME, BizCard.COLUMN_ID + "=?", new String[]{ String.valueOf( bizCard.getRowid())});
        } catch(Exception e){
        } finally {
            db.close();
        }
    }
空のcatchをつけ加えただけです。
本来は削除する前にbizCard.getRowid().length()とかでチェックするのが正道なのだと思いますがまあいいや。

以上で新規登録→削除を行っても落ちないようになりました。
返り値がvoidなんで成功したんだか失敗したんだかわからないところがアレですが。

さて、これで大丈夫かと思いきやさらにさらに問題があります。
「名刺一覧画面→詳細→編集→削除→OK→保存」


今回は何処でエラーになっているかというと、ShowActivity.onActivityResult()です。
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if( resultCode == RESULT_OK){
            // 表示を更新する
            BizCardDao dao = new BizCardDao( this);
            bizCard = dao.load( bizCard.getRowid());
            updateView();
        }
    }
呼び出されるBizCardDao.load()
    public BizCard load(Long rowId) {
        SQLiteDatabase db = helper.getReadableDatabase();

        BizCard bizCard = null;
        try {
            Cursor cursor = db.query( BizCard.TABLE_NAME, null, BizCard.COLUMN_ID + "=?", new String[]{ String.valueOf( rowId)}, null, null, null);
            cursor.moveToFirst();
            bizCard = getBizCard( cursor);
        } finally {
            db.close();
        }
        return bizCard;
    }
編集画面でbizCardを削除してしまっているので、bizCard.getRowid()に失敗してBizCardDao.load()中で例外が発生します。

/src/com.example.bizcard.db/BizCardDao.java
    public BizCard load(Long rowId) {
        SQLiteDatabase db = helper.getReadableDatabase();

        BizCard bizCard = null;
        try {
            Cursor cursor = db.query( BizCard.TABLE_NAME, null, BizCard.COLUMN_ID + "=?", new String[]{ String.valueOf( rowId)}, null, null, null);
            cursor.moveToFirst();
            bizCard = getBizCard( cursor);
        } catch(Exception e) {
        } finally {
            db.close();
        }
        return bizCard;
    }
/src/com.example.bizcard/ShowActivity.java
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if( resultCode == RESULT_OK){
            // 表示を更新する
            BizCardDao dao = new BizCardDao( this);
            bizCard = dao.load( bizCard.getRowid());
            if(bizCard == null ){
            	setResult( RESULT_CANCELED);
            	finish();
            	return ;
            }
            updateView();
        }
    }
まずBizCard.load()のほうは例外を単に空のcatchで括ります。
BizCard.load()の返り値は本来BizCard型ですが、取得に失敗した場合はnullが返るようになります。
ということで呼び出し側のShowActivity.onActivityResult()では返り値がnullだった場合さっさと名刺一覧画面に戻るようにしました。

以上で、「名刺一覧画面→詳細→編集→削除→OK→保存」とした場合、保存されたうえで名刺一覧画面に戻るようになりました。


これでめでたしめでたし、かと思えば実はまだ問題があったりして。
「名刺一覧画面→詳細→編集→削除→OK→戻るボタン」で、削除したはずの名刺情報が閲覧できます。
これはもまたShowActivity.onActivityResult()が原因です。
最初の一行でif( resultCode == RESULT_OK)とやっていますが、RegistActivity.onOptionsItemSelected()のように明示的に成功ステータスを返さないとここがtrueになりません。
戻るボタンが押された場合はRESULT_CANCELEDが返ってくるのでここのコードが実行されず、インテント呼び出し前の画面がそのまま表示されるという結果になります。
そこからさらに編集→保存などとしてみると「保存されました」とか表示するくせに一覧画面に戻ってさらに保存されていないというおかしな結果に。

解決策として、ここでは単純に返り値がどのようなステータスでもBizCardをリロードするようにします。
何故って、他に削除→戻るボタンと単純に戻るボタンを押しただけの状態を区別する方法が見つからないんじゃ。

/src/com.example.bizcard/ShowActivity.java
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            // 表示を更新する
            BizCardDao dao = new BizCardDao( this);
            bizCard = dao.load( bizCard.getRowid());
            //取得できなければ一覧に戻る
            if(bizCard == null ){
            	setResult( RESULT_CANCELED);
            	finish();
            	return ;
            }
            updateView();
    }
単にifを削除しただけです。
これで名刺一覧画面→詳細→編集→削除→OK→戻るボタンで、名刺一覧画面に戻るようになりました。


以上でようやくめでたしめでたしかと思えばまだまだ問題があったり。

「名刺一覧画面→新規登録→保存」、「名刺一覧画面→詳細→編集→削除→OK→保存」だと保存されたあと一覧画面に戻りますが、「名刺一覧画面→詳細→編集→保存」だと名刺詳細画面に移動します。

こんなふうに操作によってちがう挙動になるというのはよくないので、どの遷移を通っても名刺詳細画面に戻るべきでしょう。
問題は「名刺一覧画面→新規登録→保存」でShowActivity.bizCardにどうやって作成したBizCardオブジェクトを保存するかわかんないという点なわけですが。


2010/09/17 22:58 | Comments(0) | TrackBack() | Android
XBLAにレイディアントシルバーガン登場
MGSR http://www.gametrailers.com/video/tgs-10-metal-gear/70456
スパイク・・・ファイプロ新作(XBLA)
 ttp://www.blogcdn.com/www.engadget.com/media/2010/09/msft-tgs-live-0507.jpg
トレジャー・・・銀銃リメイク http://www.youtube.com/watch?v=lfakyXCo_mY
【キネクト】
『パラッパラッパー』などでおなじみの松浦さん・・・Haunt。配信は2011年
 http://www.joystiq.com/2010/09/15/haunt-to-materialize-on-kinect-in-2011/
二木氏(PDの人)・・・プロジェクトドラゴン ttp://gamevideos.1up.com/video/id/31432
51・・・コードネームD. http://www.gametrailers.com/video/tgs-10-codename-d/704567
水口・・・チャイルド オブ エデン ttp://www.gametrailers.com/video/tgs-10-child-of/704571
セガ・・・『ライズオブナイトメア』 http://www.gametrailers.com/video/tgs-10-rise-of/704570
カプコン・・・重鉄騎 http://www.gametrailers.com/video/tgs-10-steel-battalion/704561

ぎっぎぎぎ銀銃きたああああああああああああああああああああ!!!!!!!!!!!!!!!



2010/09/16 22:14 | Comments(0) | TrackBack() | ゲーム
今週の実績 2010/09/12

2010/09/11の実績

悪魔城ドラキュラ HD

グラスホッパー 20G
地面に下りずに連続でジャンプキックを30回成功させた

モダン・ウォーフェア2

警戒の限界 10G
シングルプレイヤーもしくはスペシャルオプスで、存在に気づかれることなくナイフで敵を殺す。

サンダーソン大佐 10G
「スズメバチの巣」で、10秒以内に7羽のニワトリを殺す。

独自行動 25G
「ライク・オールドタイム」、「エンドゲーム」をベテランの難易度でクリア。

戦いの代償 90G
ハードもしくはベテランの難易度で、シングルプレイヤー・キャンペーンをクリア。

撃ち逃げ 10G
シングルプレイヤーもしくはスペシャルオプスで車両を運転中に、連続で20人の敵を殺す。

チェックメイト 25G
「未決事項」および「敵の敵は」をベテランの難易度でクリア。

帰郷 25G
「自らの意思」、「2つめの太陽」、「ウイスキーホテル」をベテランの難易度でクリア。

正当化 25G
「偶発性」をベテランの難易度でクリア。

囚人#627 25G
「オンリー・イージー・デイ」および「収容者#627」をベテランの難易度でクリア。

2010/09/10の実績

モダン・ウォーフェア2

赤い夜明け 25G
「バーガータウン」および「エクソダス」をベテランの難易度でクリア。

格好の的 10G
シングルプレイヤーもしくはスペシャルオプスで、ラペリング中の敵を2人、着地前に連続で倒す。

2010/09/08の実績

モダン・ウォーフェア2

旅行者 25G
「テイクダウン」および「スズメバチの巣」をベテランの難易度でクリア。

2010/09/07の実績

モダン・ウォーフェア2

ブラック・ダイアモンド 25G
ベテランの難易度で「クリフハンガー」をクリア。

ゴースト 10G
「クリフハンガー」において、吹雪にまぎれて敵に気づかれず、また誰も傷つけることなくC4を設置する。

2010/09/05の実績

モダン・ウォーフェア2

ぴかぴかの新入生 25G
「S.S.D.D. - いつもの戦場」および「チームプレイヤー」をベテランの難易度でクリア。

ゴールドスター 20G
スペシャルオプスで1個の星を獲得する。

歴史を記すもの 35G
難易度に関わらず、シングルプレイヤーのキャンペーンをクリア。

過剰な暴力 10G
シングルプレイヤーもしくはスペシャルオプスにおいて、ライオットシールドで敵を殴り倒す。

一難去ってもう一難 15G
飛行機墓場でのミッションをクリアする。

捨て駒 15G
マカロフの隠れ家を強襲する。

ウイスキーホテル 15G
ウイスキーホテルを奪還する。

非常事態 15G
アメリカ軍を支援する計画を実行する。

ロープ上のソープ 15G
収容所を襲撃する。

熱い視線 10G
シングルプレイヤーもしくはスペシャルオプスにおいて、サーマル仕様の武器で6人の敵を連続で倒す。

ノックダウン 10G
シングルプレイヤーもしくはスペシャルオプスでスローモーション突入中に、4発の弾で4人の敵を倒す。

悪魔城ドラキュラ HD

ナイスバッティング 10G
スケルトンの骨を打ち返して敵を1体倒した



2010/09/12 22:53 | Comments(0) | TrackBack() | 実績
買ったものリスト 2010/09/12

最近昔の名曲がゴミみたいな声で歌われてるのを聞くことが稀によくあるんだがあれって何なの?


狼と香辛料XV 太陽の金貨<上> 支倉 凍砂
☆☆☆☆

甘えええええ

いつもの知的情報戦については、今回は別の商会が裏で進めており基本的に蚊帳の外です。
そのかわりロレンスとホロの関係が作者独特の描写力でたっぷりと描かれていて大満足。
二人の関係が、ようやく対等なところまで行った感があります。

サブタイトルについては上巻ですぐに完結したように見えるのですが、まあこの作者のことだからもうひとつふたつ裏があるんだろうな。


"文学少女"見習いの、卒業。 野村 美月
☆☆☆☆☆

遠子が卒業しても心の蟠りを完全に解くまでには至らなかった心葉ですが、踏ん切りをつけられたのは菜乃がいたおかげでしょう。
最終的にどういう結末になるかは既にわかってたことではありますが、やはりどう整理をつけても辛い結果ですな。

筆力が初期のアリステア・マクリーン、古川日出男に匹敵するんじゃないかレベルの素晴らしさだ。
とりあえず野村美月は作者買い決定。


夢色パティシエール1 松本 夏実
☆☆☆

前回少女漫画を平気で買えるとか言ったけどそういや長い間買ってないということが判明したので今も平気かどうか試しに買ってみた。
別に作品自体はなんでもよかったんだが、なんとなく店頭で目が合ったのでこれにしてみた。
特に何事もなく平気で買えました。

本作の根幹を否定してあれだが精霊居なかった方がいいんじゃないか。
なにしろ一種のチートだろこれ。
樫野あたりは精霊の存在を憎悪しててもおかしくない気が。

リアクションは背景が宇宙になったりはしますが比較的穏便なレベルです。
今後どっち方面に進化していくかが楽しみですな。

しかし目のサイズが人類の限界を突破してるな。
さては目が合ってしまったのはこのせいか。


荒川アンダーザブリッジ7 中村 光
☆☆☆

またまた新キャラ登場。
って荒川河川敷のどこにアマゾネスなんかが暮らせる場所があるんだよ。
機密保持能力どころかありとあらゆる設定が胡散臭さ抜群にも程がある。

そしてメインストーリーはロケット以外何も進まず。


マスエフェクト

あのMassEffect2がローカライズ決定ということですが、1をやったことがなかったので今さら購入。
とりあえず開始1時間だが、登場キャラがおっさんばっかりだな。



2010/09/12 20:27 | Comments(0) | TrackBack() | 買ったもの
Android2.2 名刺管理アプリケーションを作ってみる5日目その8
前回の続き。

さて、住所のマップボタンにリスナーを追加したのでOnClickListenerをimplementsしてonClickを実装する必要があります。

/src/com.example.bizcard/RegistActivity.java
    //mapButtonをクリックした
    public void onClick(View v) {
        //住所を取得してインテントに詰めてMapActivityを起動
        String address = addressText.getText().toString();
        Intent mapIntent = new Intent( RegistActivity.this, MapActivity.class);
        mapIntent.putExtra( BizCard.COLUMN_ADDRESS, address);
        startActivity( mapIntent);
    };
やってることはコメントに書いてあるとおりで、ShowActivityの住所リンクをクリックしたときと全く同じです。

以上で「名刺一覧画面から新規登録」「名刺詳細画面から編集」をクリックしたときに正しく表示されるようになりました。
次に必要なのは保存のロジックとテンプレートです。
閲覧画面とちがって編集前提なので最下段に保存ボタンとかでいい気がしますが、サンプルがメニューボタンから操作を行うようになっているので倣います。
    //テキストの削除を行うサブルーチン
    private void clear(){
        bizCard = null;
        personNameText.setText( null);
        companyNameText.setText( null);
        organizationNameText.setText( null);
        positionNameText.setText( null);
        zipCodeText.setText( null);
        addressText.setText( null);
        tel1Text.setText( null);
        tel2Text.setText( null);
        mailText.setText( null);
    }
    
    //メニューボタン
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.regist, menu);
        return true;
    }

    //メニューボタンをクリックした
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        //押したメニューボタンを取得
        int itemId = item.getItemId();
        switch (itemId) {
        // 新規("@+id/menu_new")
        case R.id.menu_new:
            clear();
            break;
        // 保存("@+id/menu_save")
        case R.id.menu_save:
            //新規作成の場合BizCardオブジェクトができてないので作成
            if( bizCard == null){
                bizCard = new BizCard();
            }

            // 入力チェック 氏名が入力されているかのみ
            String personName = personNameText.getText().toString();
            if( personName.length() == 0){
                Toast toast = Toast.makeText(this, R.string.error_required, Toast.LENGTH_SHORT);
                toast.show();
                return false;
            }

            // BizCardオブジェクトに入力値を反映する
            bizCard.setPersonName( personName);
            bizCard.setCompanyName( companyNameText.getText().toString());
            bizCard.setOrganizationName( organizationNameText.getText().toString());
            bizCard.setPositionName( positionNameText.getText().toString());
            bizCard.setZipCode( zipCodeText.getText().toString());
            bizCard.setAddress( addressText.getText().toString());
            bizCard.setTel1( tel1Text.getText().toString());
            bizCard.setTel2( tel2Text.getText().toString());
            bizCard.setMail( mailText.getText().toString());

            // 保存
            BizCardDao dao = new BizCardDao( this);
            bizCard = dao.save( bizCard);

            // メッセージ表示
            Toast toast = Toast.makeText(this, R.string.saved, Toast.LENGTH_SHORT);
            toast.show();

            // 保存時に終了し、前のアクティビティへ戻る
            setResult( RESULT_OK);
            finish();
            break;

            // 削除("@+id/menu_delete")
        case R.id.menu_delete:
            // 確認ダイアログの表示
            AlertDialog.Builder builder = new AlertDialog.Builder( this);
            // アイコン設定
            builder.setIcon(android.R.drawable.ic_dialog_alert);
            // タイトル設定
            builder.setTitle( R.string.confirm_delete);
            // OKボタン設定
            builder.setPositiveButton( android.R.string.ok, new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int whichButton) {
                    // 削除処理
                    BizCardDao dao = new BizCardDao( RegistActivity.this);
                    dao.delete( bizCard);
                    // 画面の更新
                    clear();
                    // メッセージ表示
                    Toast toast = Toast.makeText(RegistActivity.this, R.string.deleted, Toast.LENGTH_SHORT);
                    toast.show();
                }
            });
            // キャンセルボタン設定
            builder.setNegativeButton( android.R.string.cancel, null);
            // ダイアログの表示
            builder.show();
            break;
        }
        return true;
    }
さあ一気に長くなりました。
個人的にこのswitch内に長大ロジックって作りが大嫌いなんだがみんな平気なの?

まずonCreateOptionsMenu()でメニューを押したらregist.xmlが表示されるようにします。
次にonOptionsItemSelected()でメニューボタンが押されたときの処理を記述します。

最初にあるのはR.id.menu_newですが、現在メニューボタンにR.id.menu_newはないのでここに来ることはありません。

次にR.id.menu_save、保存ボタンを押したときの処理です。
必須なのが名前だけなので、length()で長さが0だった場合はエラーメッセージを表示します。
このToastは一定時間だけダイアログを表示するという便利なクラスです。
お手軽に実績のポコンみたいなものを実装できます。
第三引数で表示時間を指定することができ、Toast.LENGTH_SHORTは短時間(2、3秒)、Toast.LENGTH_LONGは長時間(4、5秒)ってあんまり変わらねえ。
何故か任意の時間を渡すことはできません。

その後は単にBizCardオブジェクトに入力値を突っ込んでsave()メソッドを呼んでるだけです。
編集の場合一番最初の一覧画面で取得したBizCardオブジェクトをずっと引き回しているので、IDが入っていてUPDATEになり、新規作成の場合は直前にnewで作成されているのでIDがなくINSERTになります。
めでたし。

Activity.finish()すると現在のアクティビティを終了します。
Activity.setResult()で値を入れると呼び出し元のアクティビティに値を返すことができます。

でだ、前ShowActivity.onActivityResult()でRESULT_OKだったら表示を更新、というメソッドを実装したはずなんだが更新されない。何故?
ifを外して常時更新にしても駄目だったので根本的に呼ばれてすらいないみたいなんだが。

いろいろ触ってみたところ、startActivityForResult()の第二引数を正の値にしたら正しく動作するようになりました。
なにそれ。
サンプルでは間違いなく-1って書いてあるのに。


削除ボタンを押したときはR.id.menu_deleteの動作になります。
まずAlertDialogでアラートのポップアップを作成します。
AlertDialog.Builder.setIcon()AlertDialog.setIcon()が一体どう違うのか私にはわからない。

ダイアログ内にsetNegativeButton()でキャンセルボタン、setPositiveButton()でOKボタンを実装します。
setPositiveButtonのリスナーはこの場かぎりの無名クラスで実装されています。
中身はデータベースから現在のBizCardを削除し、テキストを削除し、インスタンス内のBizCardオブジェクトも削除し、削除した旨のメッセージを表示する、となっています。

以上で、マップ関係以外の名刺管理アプリケーションの機能が完成しまし・・・実はひとつ問題があります。


Androidの記事


2010/09/10 23:52 | Comments(0) | TrackBack() | Android
XBOX360 メディアブリーフィング
XBOX360メディアブリーフィングが祭りに。

http://game.watch.impress.co.jp/docs/event/20100908_392494.html

http://www.onlineplayer.jp/modules/topics/article.php?storyid=19161
http://www.famitsu.com/news/201009/08033183.html

今日のまとめ

【MSKK】
最新モデルXbox360 4GB ベーシックモデル発売
秋から春にかけて100本発売予定(昨年の2倍)
HALOリーチ本体同梱版発売決定
GoW3、4月7日全世界同時発売
マスエフェ2今冬発売(前作のセーブデータ引継ぎ有り)

【スクエニ】
ガン☆ロコ日本発売決定(発売は2011年)
 9月9日から、初音ミクシリーズを使ったコンテスト(ステージ内BGMコンテスト)
マインドジャック(発売は2011年)
FME(9月末からDLC配信)
CoDBO(追加DLCは2012年まで360が先行配信)
FF13(英語音声、楽曲も海外版。イージーモード搭載、初回特典ブックレット
 発売は12月16日。価格は4980円。DVD3枚組)
 ブックレット内容
  ・ビジュアルアート集
  ・未公開シーンを台本と合わせて紹介
  ・エンディング後のストーリーを書き下ろし小説

【キネクト】
日本では11月20日に発売
250GBモデルの本体とKinect、『Kinectアドベンチャー』セット 39800円
Xbox 360 4GBとKinect、『Kinectアドベンチャー」セット 29800円
Kinect単体 14800円。『Kinectアドベンチャー』が同梱
ソニックライダーズ(子供と泉水が一緒に遊んで泉水負ける「なんてことを!」)
>[14:39:16] アイテムで妨害され、泉水氏「なんということでしょう」を連発
 ロンチタイトル
  ・ソニックライダーズ
  ・キネクトスポーツ
  ・クロスボード7
  ・ダンスエボリューション
  ・デカスポルタフリーダム
  ・体で答える新しい脳トレ(5ジャンル、20種類の脳トレを収録)
『Your Shape』、『KINECT ANIMALS』は12月9日発売
キネクトジョイライドは2011年初頭

【ZUNEビデオ】
 現在配信決定している
  ・バンダイチャンネル
  ・ユニバーサル
  ・パラマウントピクチャー
 サービス開始時にはもっと多く参加している(100以上のコンテンツを用意)
 サービス開始後、月10本程度追加
 配信映画、すべて予告編を視聴可能(その後レンタル購入)
 ストリーミング映像を瞬時に上映
 キネクトの音声操作にも対応
 24時間以内なら何度でも視聴可能


だが。
地球防衛軍がないorz


2010/09/09 00:48 | Comments(0) | TrackBack() | ゲーム
Android2.2 名刺管理アプリケーションを作ってみる5日目その7
http://codezine.jp/article/detail/4842?p=4

前回は名刺詳細画面から詳細編集画面への遷移を作成しました。
今回は詳細編集画面にインテントが送られてきたらその値をデフォルト表示するようにします。

実は名刺一覧画面からやってくる新規登録画面と、名刺詳細画面からやってくる詳細編集画面は同じです。
入力は単にインテントがあれば初期値にして、インテントがなければ空っぽのままにします。
問題は保存で、更新と新規登録を見極めなければなりません。
が、実は前BizCardDaoを作成したときに、bizCard.rowidがあれば更新、無ければ新規登録というふうにしていました。
つまりインテントからrowidを持ち回しておけば問題無いということです。

ということでRegistActivityを実装。
まずは新規/保存/削除を選択させるメニューを作成。

/res/menu/regist.xml
<?xml version="1.0" encoding="utf-8" ?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- 保存メニュー -->
    <item
        android:id="@+id/menu_save"
        android:title="@string/menu_save"
        android:icon="@android:drawable/ic_menu_save" />
    <!-- 削除メニュー -->
    <item
        android:id="@+id/menu_delete"
        android:title="@string/menu_delete"
        android:icon="@android:drawable/ic_menu_delete" />
</menu>

ただ、これは保存/削除メニューを一気に作ってるんだけど、この作りだと絶対に保存/削除は並べて表示するしかなくなります。
regist.xml以外に/res/menu/delete.xmlを作って削除メニューはそっちに持っていった方が自由度があるのではないだろうかと思った。
まあ普通保存と削除は並んでるだろうからまあいいか。

先に「保存しました」とかの文言を作成しておく。

/res/values/strings.xml
	<string name="saved">保存しました</string>
	<string name="confirm_delete">本当に削除しますか?</string>
	<string name="deleted">削除しました</string>
	<string name="error_required">必須項目を入力してください</string>

インテントがあればそこから値を取得し、なければ単に新規登録するようにRegistActivity.onCreate()を書き換えます。

/src/com.example.bizcard/RegistActivity.java
	public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.regist);

        // 部品の取得
        personNameText = (EditText)findViewById( R.id.personNameText);
        companyNameText = (EditText)findViewById( R.id.companyNameText);
        organizationNameText = (EditText)findViewById( R.id.organizationNameText);
        positionNameText = (EditText)findViewById( R.id.positionNameText);
        zipCodeText = (EditText)findViewById( R.id.zipCodeText);
        addressText = (EditText)findViewById( R.id.addressText);
        mapButton = (ImageButton)findViewById( R.id.mapButton);
        tel1Text = (EditText)findViewById( R.id.tel1Text);
        tel2Text = (EditText)findViewById( R.id.tel2Text);
        mailText = (EditText)findViewById( R.id.mailText);

        // ボタンにマップ表示用のリスナー追加
        mapButton.setOnClickListener( this);

        // インテントを取得
        bizCard = (BizCard)getIntent().getSerializableExtra( BizCard.TABLE_NAME);

        // インテントが見つかれば値を設定する
        if( bizCard != null){
            personNameText.setText( bizCard.getPersonName());
            companyNameText.setText( bizCard.getCompanyName());
            organizationNameText.setText( bizCard.getOrganizationName());
            positionNameText.setText( bizCard.getPositionName());
            zipCodeText.setText( bizCard.getZipCode());
            addressText.setText( bizCard.getAddress());
            tel1Text.setText( bizCard.getTel1());
            tel2Text.setText( bizCard.getTel2());
            mailText.setText( bizCard.getMail());
        }
    }

部品の割り当て毎回書いてるけど面倒だな・・・
なんかView.setTexts(R.layout.regist, bizCard)とか無いのか?

元記事ではIntent intent = getIntent();と一旦インテントをオブジェクト化してから突っ込んでいますが、使い回す必要がなければメソッドチェーンした方がインポートの必要もないし手っ取り早いです。
てか、前回のShowActivity.javaではそう書いてるんですがね。

どっちの書き方でも同じなので問題無いんですが、ひとつのアプリ内では書き方は揃えておいた方がいいと思う。

それ以外は単に/res/layout/regist.xmlから部品を特定し、インテントがあればその値を突っ込んでいるだけです。
幸いIntent.getSerializableExtra()は取得できなくても例外を吐いたりしないようです。

無事インテントが引き継がれるようになりました。


Androidの記事


2010/09/06 22:51 | Comments(0) | TrackBack() | Android

<<前のページ | HOME | 次のページ>>
忍者ブログ[PR]