Androidプログラミング質問スレ Part28at TECH
Androidプログラミング質問スレ Part28 - 暇つぶし2ch1:デフォルトの名無しさん
12/12/23 21:20:54.50
このスレではAndroidSDK・NDKやAndroidマーケットに関する質問を扱ってます。

※プログラミング自体が初めて!なあなたには↓↓↓こちらへ
スレ立てるまでもない質問はここで 123匹目
スレリンク(tech板)
Eclipse統合M33【Java/C++/Ruby/Python/Perl】
スレリンク(tech板)
★★Java質問・相談スレッド158★★
スレリンク(tech板)

****関連リンク****
■ Android developers URLリンク(developer.android.com)
■ ソフトウェア技術ドキュメントを勝手に翻訳 URLリンク(www.techdoctranslator.com)

****前スレ****
Androidプログラミング質問スレ Part27
スレリンク(tech板)

2:デフォルトの名無しさん
12/12/23 21:34:30.87
決して答えが帰ってこない糞スレ。みんなURLリンク(stackoverflow.com)で聞こうぜ

3:デフォルトの名無しさん
12/12/23 22:56:48.09
スレタイに「初心者」入れとけ

4:デフォルトの名無しさん
12/12/23 23:39:45.39
テンプレ見たらNDKの質問も桶なのか。あんまり期待しないで活用しようかな。

5:デフォルトの名無しさん
12/12/24 01:14:04.89
みんな個人で開発するとき、バージョン管理ソフトとか使っている?
職場でVSS使っていて、使い方が最初わからなくて迷惑かけたから、これからのために何か使ってみようと思うんだけど、
個人でローカルで開発だと、なんかすげー設定めんどくさい

6:デフォルトの名無しさん
12/12/24 01:19:50.59
git

7:デフォルトの名無しさん
12/12/24 01:31:39.06
>>5
git使ってる。サーバなくても始められるから気軽。公開したくなったら、githubというサービスもあるし。

8:デフォルトの名無しさん
12/12/24 01:38:00.01
>>6-7
ありがとう
Subversion入れようとして挫折したからGit試してみる

9:デフォルトの名無しさん
12/12/24 02:05:52.40
>>8
vidual svn server でググれ

10:デフォルトの名無しさん
12/12/24 02:07:17.18
○ visual
× vidual

11:デフォルトの名無しさん
12/12/24 04:45:34.86
Adobe ReaderやWebkitではないOpera,Firefoxなどのブラウザは何で描画してるのか解りますか?
SurfaceViewとか?Android2系でハードウェア支援されてますか?

12:デフォルトの名無しさん
12/12/24 13:12:30.79
俺もgit使ってみようと思うんだけどイメージとして
バージョンごとに同じプロジェクトのファイルが存在するってこと?
あとeclipseとの連携はどうなるの?

13:デフォルトの名無しさん
12/12/24 13:30:43.64
>>12
それはsvnでも一緒のような。。。
gitのプラグインもあるみたいだよ

14:デフォルトの名無しさん
12/12/24 19:28:34.77
放置型RPGを作りたいと思ってるのですがどう作ればいいか、いい本やサイトご存知の方いたら教えて下さい。
自分なりにググりましたが出てこずでした…

15:デフォルトの名無しさん
12/12/24 19:41:42.06
git って手放しで奨められるものなのか?
IntentService の中で HandlerThread がどう使われているのか見てみたくて、
ソースの取得に git が必要だったんで、EGit とか入れてやってみたけど、
アカウント取る必要があったりとか手順がよくわからなかったよ

会社では Subveresion だし、家でもそうだから慣れもあるとは思うけど

16:デフォルトの名無しさん
12/12/24 20:33:12.16
>>15
アプリとサービスを一緒にされても。

17:デフォルトの名無しさん
12/12/24 20:34:20.47
>>14
お前には無理

18:デフォルトの名無しさん
12/12/24 21:36:05.94
>>15
オーケー分かった
お前には無理だ諦めろ

19:デフォルトの名無しさん
12/12/24 22:28:21.89
教えない、示さない、共有しない、
こういう奴はすべて保身のためにやっている

20:デフォルトの名無しさん
12/12/24 23:15:13.51
>15
ローカル運用だとgitが一番簡単だろ。
WindowsだったらTortoiseGITインストールしたあとに
適当なフォルダ右クリックして新しいリポジトリ作るだけで
OKだからな。

21:デフォルトの名無しさん
12/12/24 23:21:42.80
WinCVSごった煮版も簡単・・・なはず
どれもにたようなもんだけどな

VSSとsubversionでチェックアウトの意味合いが違うのには困ったことがあるが

22:デフォルトの名無しさん
12/12/25 00:32:39.07
会社でsvn使ってるくせに、
アカウント取るだの意味分かんないもん

23:デフォルトの名無しさん
12/12/25 00:42:11.05
ダイアログについて質問です。
SeekBar 3 枚とその説明の為の TextView 3 枚 を含む LinearLayout を AlertDialog.Bulder.setView に放り込んでいます。
Android 2.2 では画面いっぱいまでダイアログがの幅 が画面に合わせて伸張した ので SeekBar の操作は問題なかったのですが、
Android 4 になると一番幅を取っている TextView の 長さを最大幅として画面中央 にこじんまりとダイアログが表示されてしまい、 SeekBar が操作しづらいです。
この問題の対処法を教えてください。

24:0 ◆SeZffd6X/Q
12/12/25 01:00:02.04
>>14
放置型RPGって「ゆけ!勇者」みたいなアプリのことかな?
もしそうならAndroidアプリ製作の前に次の事からやってみるといいよ
違うのなら忘れて。

・無料サーバーなどでホームページを作る (検索キーワード「はじめて作るホームページ」)
・アクセスカウンター、掲示板などを自作で作る (検索キーワード「CGI PHP 掲示板の作り方」)
・掲示板をデータベース対応型に改造してみる (検索キーワード「CGI PHP MySQL」)
・CGIゲームを自作で作る (検索キーワード「PHP ゲームの作り方」)

ここまでを、冬休みの学生なら2ヶ月、仕事と両立社会人なら6ヶ月くらいかな
こいつらの技術をつかめたら次はいよいよAndroid製作

25:デフォルトの名無しさん
12/12/25 01:01:52.11
>>23
seekbarの幅を設定する。

26:デフォルトの名無しさん
12/12/25 01:50:42.18
マニフェストのactivityタグで指定されたアクティビティの型をすべて取得する方法はありますか?

27:デフォルトの名無しさん
12/12/25 02:10:34.64
>>24
なぜ全然違う役に立たないものを教えるのかわからんわ。
JavaのCUIでいいだろ。

28:デフォルトの名無しさん
12/12/25 02:26:42.11
>>27
時間の管理をサーバーに預けたいからじゃね?
普通に作ると、本体の時刻設定を弄られるとアプリも時間が経ったことになっちゃうから

29:デフォルトの名無しさん
12/12/25 04:40:53.16
>>26
activityの型って何?

30:0 ◆SeZffd6X/Q
12/12/25 06:00:15.18
>>27
JavaのCUIは詳しく無いからわからないけど
Webサーバーにオンラインデータサーバー的プログラムを作れるのならそれでもかまわなよ
JavaでCGIやる場合Javaサーブレット使うもんだと思ってる古い人間なんで~

同時アクセス時のデータ整合やらセッション管理やらに優れてるPHPの方がお手軽だとおもってね

31:0 ◆SeZffd6X/Q
12/12/25 06:10:44.38
>>28
そそ。放置型RPGってのが「行け!勇者!」みたいな物だと想定しての話だけどな。

その場合は時間だけじゃなく、アイテム、マップ、装備ふくめた全ステータスデータはサーバー側で管理して
プレイヤーランキング、新アイテムやマップの追加、定期イベント(クリスマスイベントなど)発行やらを可能にする感じ。
バージョンアップ通知も簡単になるし。

放置型RPGってのがネットワーク関係なく、完全なローカルゲームというなら
最初に言ったとおりこの話は全部忘れてくれ
時代的に>>14はソーシャルRPGみたいのを作りたいのかな?と思っただけさ

32:デフォルトの名無しさん
12/12/25 09:38:36.61
放置型RPGの質問した者です。

ご回答ありがとうございます。
あれはサーバー側で管理すればいいのですね!
まさに、いけ勇者みたいな感じのを作ってみたいと思っていました。
railsなら普通に使えて、ec2も借りてるので皆様に教えて頂いたイメージで設計してみます。
ありがとうございました。

33:デフォルトの名無しさん
12/12/25 13:58:05.75
Androidのデバック署名で出来ることは?

Androidのアプリ開発をしています。
アプリは署名をすることでリリースできるそうですが、デバック署名で出来ることは何ですか?
Android marketで配らない限りはデバック署名で十分ですか?


出来ることの違いが知りたいです

34:デフォルトの名無しさん
12/12/25 14:35:24.06
選択した日付の曜日を取得するにはどうすればいいですか?
現在の曜日はわかるのですが、下記のコードにdate.get(Calendar.DAY_OF_WEEK);を追加できないので

Calendar date = Calendar.getInstance();
DatePickerDialog datePickerDialog =
new DatePickerDialog(this,new DatePickerDialog.OnDateSetListener() {
public void onDateSet( DatePicker view, int yearint monthOfYear,int dayOfMonth){
text1.setText(year + "/" + (monthOfYear + 1) + "/"+dayOfMonth);
}
},
date.get(Calendar.YEAR),
date.get(Calendar.MONTH),
date.get(Calendar.DATE));
datePickerDialog.setTitle("日付選択");
datePickerDialog.show();

35:デフォルトの名無しさん
12/12/25 14:54:14.69
>>33
出来ることに違いは無い
有効期限には気をつけろ

36:デフォルトの名無しさん
12/12/25 14:59:16.63
>>34
public void onDateSet( DatePicker view, int yearint monthOfYear,int dayOfMonth){
Calendar date2 = Calendar.getInstance();
date2.set(Calendar.YEAR, year);
date2.set(Calendar.MONTH, monthOfYear);
date2.set(Calendar.DAY_OF_MONTH, dayOfMonth);
int dayOfWeek = date2.get(Calendar.DAY_OF_WEEK);
text1.setText(year + "/" + (monthOfYear + 1) + "/"+dayOfMonth + "日月火水木金土".charAt(dayOfWeek - 1));
}

37:デフォルトの名無しさん
12/12/25 15:12:55.02
>>35
そうなんですか
ありがとうございます

もうひとつ質問なんですが、 Androidの自作アプリが別の人の端末に入らないんです。
開発環境はAndroidのアプリのAIDEです。
自分の持っている端末2台ではどちらも正常にインストール,実行できました。
しかし、別の人の端末にインストールしようとすると、"解析に問題があります"とエラーが出て、インストールできません。
検索すると、apiレベルが対応していないということらしいのですが、apiレベルは問題ありません。
自分の持っている端末のAndroidバージョンは4.0と4.2です。
エラーが出る相手の端末はバージョン2.3です。
アプリの最低apiレベルは1で、ターゲットapiレベルは10です。

署名もしていますし、どうしてエラーが出るのか全くわかりません。
対策はありますか?

問題のapkファイル
URLリンク(yamamasa219.web.fc2.com)

38:デフォルトの名無しさん
12/12/25 16:30:39.49
>>36
ありがとうございます!しかしうまくいきません。
このようにonDateSet以降を改良するんですよね?
コンストラクタDatePickerDialog(クラス名,new DatePickerDialog.OnDateSetListener() {})は未定義です、とでてきてしまいます



DatePickerDialog datePickerDialog =
new DatePickerDialog(this,new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet( DatePicker view, int year,int monthOfYear,int dayOfMonth){
Calendar date2 = Calendar.getInstance();
date2.set(Calendar.YEAR, year);
date2.set(Calendar.MONTH, monthOfYear);
date2.set(Calendar.DAY_OF_MONTH, dayOfMonth);
int dayOfWeek = date2.get(Calendar.DAY_OF_WEEK);
text1.setText(year + "/" + (monthOfYear + 1) + "/"+dayOfMonth + "日月火水木金土".charAt(dayOfWeek - 1));
}
}
);
datePickerDialog.setTitle("日付選択");
datePickerDialog.show();
}

39:デフォルトの名無しさん
12/12/25 17:36:05.94
>>38
DatePickerDialogのコンストラクタの引数足りてなくね?

40:デフォルトの名無しさん
12/12/25 18:09:03.54
>>39
解決しました
なんか勘違いしてました(汗)
ありがとうございます!

41:26
12/12/25 22:11:47.59
>>29
すみません。正確に書きます。
Manifest.xmlに複数のactivityタグがあります。activityタグにはandroid:name="sample.MyActivity"のように
属性でアクティビティのクラス名を指定しますよね。この情報をプログラムから取得したいということです。
具体的にはアクティビティのクラスに対応するClass<?>オブジェクトを取得したいです。
取得したいのは自分自身のパッケージにあるすべてのアクティビティなので、
コード内で配列などに直接書いてしまってもいいのですが、
二度手間になるので実行時に取得する方法があればと思いました。

42:デフォルトの名無しさん
12/12/25 22:25:42.42
エミュレータークッソ遅い。
メモリ幾つあれば、CPU幾つあれば快適動作してくれるの?

43:デフォルトの名無しさん
12/12/25 22:28:13.77
>>41
URLリンク(developer.android.com)

44:デフォルトの名無しさん
12/12/25 22:28:15.79
京でも買ってくるしかない

45:デフォルトの名無しさん
12/12/25 22:52:13.06
>>42
部品をバラして作って、Androidとのviewのとこだけエミュで動かしながらだ。あとは完成してからのテスト。
という開発スタイルでやってる。

46:デフォルトの名無しさん
12/12/25 22:54:52.24
京もプロセッサ1個の性能は全然大したことないからICS(ARM)のエミュなんか動かしたら遅そう

47:デフォルトの名無しさん
12/12/25 23:00:44.50
>>45
にほんごでおけ

48:デフォルトの名無しさん
12/12/25 23:05:56.99
>>47
単体テストしろってことだ。

49:デフォルトの名無しさん
12/12/25 23:49:28.14
>>48
快適動作に必要なスペックを訊いている人のレスとして
「XXXしながらだ。あとは完成してからのテスト。というスタイルで俺はやってるぜ!」
なんてこと書かれても、

 えーっと、問いに対する答えになってませんが。
 そもそも1文目が意味不明だし。

としか返せないです。
「単体テストしろ」なら、問いに対する答えにはなっていないにしても
まぁ理解できるレスではありますね。

50:デフォルトの名無しさん
12/12/25 23:55:54.26
・・・なんかすみません。
Corei3でRAM4GBだとサクサクだよーとか意見があったら嬉しかったのですが・・・

51:デフォルトの名無しさん
12/12/26 00:07:13.43
>>49
ごめんね、まともな開発したことない人には難しかったね。

52:デフォルトの名無しさん
12/12/26 00:32:19.46
エミュレータが重いなら実機でやれアホ

53:デフォルトの名無しさん
12/12/26 01:01:50.87
>>52
実機でやっても1分以上かからない?iOSだと10秒以下なのに。

54:デフォルトの名無しさん
12/12/26 01:10:06.10
何が1分以上なのか、説明しないで他人に伝わると思っている時点で重度のアスペ。
どうしようもない。

55:デフォルトの名無しさん
12/12/26 01:13:42.56
実機でやる場合ってapkファイル的なものが実機にインスコされる?
adb接続を終了したら勝手に消える?

56:デフォルトの名無しさん
12/12/26 01:17:27.18
インスコされて勝手に消えない

57:デフォルトの名無しさん
12/12/26 01:24:50.20
>>50
Windowsなら、SDK Manager使ってx86 SystemImageとHAXM入れたら
速くならないかな?
developer.android.com/tools/devices/emulator.html#accel-vm

自分はUbuntuなんでKVM導入して動かしてるけど
i5-430UM 1.2GHz/RAM 8GBのノートで、ドロワーとかは一瞬で開く
ANDROIDロゴが出てからホームが表示されるまで、長くて10秒くらい

58:デフォルトの名無しさん
12/12/26 03:36:34.48
>>57
AMDの俺はWindowsじゃダメでLinuxでやるしか無いという…

59:デフォルトの名無しさん
12/12/26 07:22:11.51
>>51
日本語の話だよw
一度しかない人生なのだから
母国語くらいまともに遣ってやれ。

60:デフォルトの名無しさん
12/12/26 09:34:03.84
>>54
判ってるくせにw

61:デフォルトの名無しさん
12/12/26 12:58:23.69
Contextにthis(Activity)を渡してるソースコードを
ネットや本のいたるところで見かけるんだけど、
hprofで見ると参照が残ってリークしてるように見えるのは
問題ないのかな?

62:デフォルトの名無しさん
12/12/26 13:28:41.15
>>61
画面閉じた後も残ってるんだったら
onDestroyとかでクリアしてやるべき

63:デフォルトの名無しさん
12/12/26 14:26:16.05
URLリンク(itpro.nikkeibp.co.jp)
ここを参考にしてやってるんだけどうまくいかない助けて
エミュレータの作成のところで"create AVD"のボタンが押せない

64:デフォルトの名無しさん
12/12/26 15:01:22.35
>>63
・「エミュレータの作成」がページのどの辺に書いてあるのか
・項目として書いてあるのか、文章の中で突然出てくるキーワードなのか
・回答者にキーワードをわざわざ検索してもらうことを想定しているのか
・上記のようなことを想像できないで、ただ何となく質問しているのか

65:デフォルトの名無しさん
12/12/26 15:35:49.01
アプリのDB管理?について質問なのですが、約8kbの文字をSQLiteでインサートを書き続けるのと、txtファイルを使ってデータ管理するのはどの部分がどの程度違うのでしょうか?

66:デフォルトの名無しさん
12/12/26 15:46:42.20
>>65
もう少しデータベースの特徴について理解した方がいいよ。
基本はどちらもファイルである事に違いは無いけど。
データのinとoutと、search、update等をどう実現するか、する必要があるシステムなのか
判断出来ないなら根本部分からの勉強不足だね。

67:デフォルトの名無しさん
12/12/26 15:56:11.22
>>66
ごめんなさいうまく日本語が書けないです…
SQLiteでインサートしてサーチするのと、txtファイルで保存しておいてそれをサーチする時の処理の速さと負担の違い
を知りたいです。
よろしくお願いします

68:デフォルトの名無しさん
12/12/26 15:57:24.61
いつもお世話になっております。bt1を押すと最初に日付セットのダイアログが呼ばれるんですが決定(「設定」)キーを押す前にlistviewを実行し、ログが出力されてしまいます。
当然セットした日付の反映はされません(次にbt1押したときに反映)
日付設定直後にリストビューに反映させるにはどうすればいいでしょうか?
日付設定は昨日36、39の方に教えていただいたのでできたのですが

btn1.setOnClickListener(new View.OnClickListener() { // カレンダーボタン
public void onClick(View v) {
timeset();// 任意の日付をセット
listview(); // セットした日付のデータをデータベースから取り出しlistviewに出力
Log.i("test","1");
}
});

69:デフォルトの名無しさん
12/12/26 16:04:02.50
onDateSetの中で実行すればいいでしょう

70:デフォルトの名無しさん
12/12/26 16:37:46.43
>>69
できました、ありがとうございます(汗)

71:デフォルトの名無しさん
12/12/26 17:42:52.14
>>67
データとやり方次第なんだから、自分で作って比較してみればいいだけの話だろう。
質問を書き込んで待っている時間があれば、とっくに検証し終わっているだろう。

72:デフォルトの名無しさん
12/12/26 17:44:48.97
2.3.6 DownloadManagerについて質問です
ブロードキャストレシーバーで
DownloadManager.ACTION_DOWNLOAD_COMPLETEの時を見てみると
ダウンロードに失敗した場合は下記の二種類を受け取っています

onReceive...
EXTRA_DOWNLOAD_ID = 1593
COLUMN_STATUS = STATUS_SUCCESSFUL
COLUMN_REASON = 0

onReceive...
EXTRA_DOWNLOAD_ID = 1593
COLUMN_STATUS = STATUS_FAILED
COLUMN_REASON = ERROR_CANNOT_RESUME

最初のレシーバーではダウンロードされたファイルがないのにSTATUS_SUCCESSFULが返されています
これはどうしてでしょうか?

73:デフォルトの名無しさん
12/12/26 17:55:19.46
>>63
SDKがちゃんとインストールできてないんじゃないの?
パッケージをちゃんとインストールできてる?

74:デフォルトの名無しさん
12/12/26 18:22:31.30
>>71
皆さんの経験談や検証結果などをお聞きしたかったのですが…
自分で検証してみます

75:デフォルトの名無しさん
12/12/26 18:34:33.36
>>74
「俺の手を動かすのが面倒だから
 お前らが俺の兵隊となって、結果だけ教えろ」

ということ?すげーな。

76:デフォルトの名無しさん
12/12/26 19:08:51.84
DatePickerのウィジェットを置いたAlertDialogを作成しています。
DatePickerDialogではありません。

DatePickerのウィジェットの下に
[+5日][-5日] ボタンを設置し、
日付を設定する操作性を高めようとしています。

が、DatePickerに対して日付をset する関数が見当たりません。
無理なんでしょうか?

77:デフォルトの名無しさん
12/12/26 19:17:13.95
>>74
というかその程度の違いも想像つかないならDBなんか使わずに素直にテキスト使っとけ

78:デフォルトの名無しさん
12/12/26 19:29:42.29
>>76
DatePicker#updateDate は?

79:72
12/12/26 20:47:12.50
STATUS_SUCCESSFUL→STATUS_FAILEDの流れの対策をしていましたが
実はSTATUS_SUCCESSFULの時点ではファイルの存在もありファイルサイズも満タンで
STATUS_FAILEDのERROR_CANNOT_RESUME onReceiveが来た時にファイルは消されてしまうという…
4.0でも同じでした 一体この現象と仕様は…

80:76
12/12/26 21:30:50.03
>>78
ありがとうございます。
DatePicker#set***
などばかり探していました。

81:デフォルトの名無しさん
12/12/26 21:42:14.34
>>75
そのように思われたのなら謝罪します、申し訳ありません。
私は「過去に私と同じ事で悩み検証した結果が残っているようでしたらご指南下さい」
と伝えたかっただけです、初めからそう書けばよかったですね申し訳ないです。

82:デフォルトの名無しさん
12/12/26 22:40:40.45
>>59
私がって主語が省略されてるのは、アメリカ人にもわかったぞ。

83:デフォルトの名無しさん
12/12/26 22:58:29.89
>>81
プログラム初心者のファイル操作よりsqliteのほうが速いと思うよ

84:デフォルトの名無しさん
12/12/26 23:07:31.36
DBの効用も知らない初心者のDB操作も恐ろしい気がするが

85:デフォルトの名無しさん
12/12/26 23:55:21.46
>>82
お前、凄いな
こんなにも会話が出来ない人がいるなんて驚きだ

86:デフォルトの名無しさん
12/12/27 00:01:58.64
Androidにインストールされている「ダウンロード」というアプリでは
失敗したダウンロードリクエストを再試行させる事が出来るのですが
自作アプリ側からDownloadManager.enqueueから受けたIDを利用して
同様の操作をする事はできないのでしょうか?

87:デフォルトの名無しさん
12/12/27 00:06:22.08
>>75
おまえらはそのためにいるからな

88:デフォルトの名無しさん
12/12/27 01:04:45.27
>>85
お前ら小学生かよw

89:デフォルトの名無しさん
12/12/27 02:03:20.09
URLリンク(epcan.us)

90:0 ◆SeZffd6X/Q
12/12/27 03:11:13.50
>>74
Androidでは実験したことないのでWindowsでの体験でいいだろうか?

[ テキストファイル保存型の場合 ]
次のように1行のデータサイズ合計が24byteで固定されている場合
|No[4byte]|名前[20byte]|メモ[20byte]|死亡フラグ[1byte]|
10000行目のデータがほしい時はファイルシークを24(byte)×10000(行)すれば
一瞬にして目的のデータにたどり着けるので問題はありませんね?

今度は1行のデータサイズが「名前」「メモ」のデータは文字数が時と場合によってランダムでかわり
決定できないようなデータの場合
|No[4byte]|名前[不確定byte]|メモ[不確定byte]|死亡フラグ[1byte]|
10000行目のデータがほしい時は、基本的にforループを10000回まわして探しにいかないとダメになります
(「カーソルをまわすやりかた」とか言われてます)

SQLの場合、後者も前者と同じように扱え、基本的に1秒以内に完了します。
またNo0~No10000までの死亡フラグを全て「生存(false)」から「死亡(true)」に変更したくなったとします。
これをカーソルまわしでやると、やはりfor10000ループが必要になりますが
SQLの場合「update 死亡=true where 死亡=false」のようなコマンド1行で(例えです)行え、やはり1秒以内に完了します。

速度面の違いのほかにも、SQLにはテキストファイルより優れた機能がたくさんあります。
例えば、アプリでプロフィール変更機能などを実現しようとした時に、
50箇所くらいデータを変更したが、やっぱり取り消したいという事がありえます。
テキスト保存型だと、この機能を実装するのは煩わしいです
保存用テキストの他に作業用テキスト(一時ファイル)を用意し、
最終決定字に一時ファイルの内容を本ファイルへ一気に保存していく。
SQLではキャンセルコマンド1行でこれを実現できます。ロールバック機能といいます。
その1つの「ロールバック機能」は、
たとえば、

91:0 ◆SeZffd6X/Q
12/12/27 03:33:54.67
後半2行「その1つの「ロールバック機能」は、たとえば、」はミスです。

>>74
その他、SQLの代表的な便利機能として「リレーションシップ」などもあります。
テキスト型で行っているときに、管理のしやすさから、なるべく全てのデータを1ファイルにまとめて記録しようと考えます。
しかし1人のデータ=1行すべて収めるやり方だと
「キャラクター名(10byte)だけ取得」したいのに、まったく不必要なデータが後ろに100kbyte余計に取得してしまったりなど無駄が出てきます
(いったん1行分まるまる変数に読み込み、その後「名前」だけ取得する場合)

これを回避するには、今度はファイルを複数に分けて管理する事になります。
「ログイン情報.txt」「キャラクター情報.txt」「所持アイテム.txt」「装備品.txt」

しかしテキスト型の場合、基本的にファイル数が増えていくと管理が面倒になっていきます。
例えば「[Aプレイヤー]の[サブキャラクター]の[手の装備]の装備名」を取得したい場合に
1:「ログイン情報.txt」からユーザー識別IDを取得する
2:1で取得したIDを使い「キャラクター情報.txt」からサブキャラクターIDを得る
3:2で取得したIDを使い「装備品.txt」から手に装備されてるアイテムIDを得る
4:3で取得したIDを使い「所持アイテム.txt」から装備品名称を得る
※多少作り方に左右されます

SQLの場合、上の処理はやはり1行で簡単に行えます。
これがリレーションシップです(リレーのバトンのようにIDを渡していくため)

他にも複数分かれているファイル(テーブルという)を1ファイルのように結合したり
Aファイルの「IDだけ」、Bファイルの「死亡フラグ」だけと必要なファイルの必要な部分だけを結合し
新しいファイルCを作成したりとても便利です。

長くなりましたが、当時CPUが2.4GHzのペンティアム4マシンで、カーソルまわしで2時間かかっていた処理が
SQLに変えることで2分で終わるようになったことが有ります。
基本的にデータ数が大きいものほど、テキスト型より管理が楽になります。

興味がわきましたらSQLの検討を考えてみてください。

92:デフォルトの名無しさん
12/12/27 03:38:52.46
>>74

>>90の訂正
[誤り]
次のように1行のデータサイズ合計が24byteで固定されている場合
|No[4byte]|名前[20byte]|メモ[20byte]|死亡フラグ[1byte]|
10000行目のデータがほしい時はファイルシークを24(byte)×10000(行)すれば

[正しい]
次のように1行のデータサイズ合計が45byteで固定されている場合
|No[4byte]|名前[20byte]|メモ[20byte]|死亡フラグ[1byte]|
10000行目のデータがほしい時はファイルシークを45(byte)×10000(行)すれば

93:デフォルトの名無しさん
12/12/27 07:35:42.32
>>90
可変長レコードのテキストとDBを比較してDBが速度速いとかお前馬鹿?

94:@
12/12/27 07:42:04.78
いちいち煽るな
心の貧しさ露呈しても恥ずかしいだけなことに早く気づけ

95:デフォルトの名無しさん
12/12/27 07:59:53.76
レベル低い内容をだらだら長文で書き込むほうが恥ずかしいわw

96:デフォルトの名無しさん
12/12/27 08:51:07.49
>>91
リレーのバトンだからリレーションか
初めて聞いたw

97: 忍法帖【Lv=40,xxxPT】(1+0:5)
12/12/27 08:54:01.09
リレーのバトン、
関係(relation)データベースだからでしょ

98:デフォルトの名無しさん
12/12/27 09:29:56.26
リレーションとリレーをかけた俺うまいってことか

99:デフォルトの名無しさん
12/12/27 09:43:16.38
簡潔に答えられないやつはプログラムもクソな印象

100:0 ◆SeZffd6X/Q
12/12/27 12:23:01.39
>>93
データ内容にはよりますね。あくまで数ある中の一例ですが
テキストと比較しDB側が有利な点は数多くあります。
まして今は実装が簡単ですからね。

>>95
簡潔にまとめている方です。
本屋でDBの本、サイトでDB説明のサイトをぜひ読んでみてください。
そしてDBを何も知らない方を対象に2レスでまとめるには、どうするか?
考えて見ていただけると幸いに思います。

>>97-98
DBを何も知らない方を対象に専門用語をなるべく使わないよう
一般でよく使われる言葉でイメージしやすくしてみました。
専門用語を多く用いれば知識ある人には、わかりやすく、簡潔に、立派に見えますが
何も知らない方を対象にこれではダメです。
リレー例は初心者向け参考書などでもよく使われる一例です。

101:デフォルトの名無しさん
12/12/27 12:38:17.19
リレーショナルは関係で、リレー(中継)とは全然違うだろ
初心者向けだからと言って嘘を教えるのは間違ってるし、
「参考書=正しい」でもないだろ

102: 忍法帖【Lv=40,xxxPT】(1+0:5)
12/12/27 12:43:00.31
そろそろ安藤プログラミングの話に戻ろうか

103:デフォルトの名無しさん
12/12/27 13:01:06.46
俺はなるほどと思って見てたけどな
説明出来ない奴より全然マシ

104:デフォルトの名無しさん
12/12/27 13:11:54.79
そもそも全文検索ならテキストファイルを全て読み込んでしまえば、
あとはCPUとメモリの性能だけの話だろう。

結局テキストファイルをどう扱うか次第。
前提条件を明確に設定せずに比べるような人間は、プログラムの才能が皆無だ。

105:93
12/12/27 13:15:38.99
>>100
データ内容によるとかじゃなくて索引無しのファイルとDB比べて優劣云々言ってるお前がアホと言いたかったの
わかりにくくてごめんね

106:デフォルトの名無しさん
12/12/27 13:17:32.37
説明しないけど批判は出来る奴wwww

107:デフォルトの名無しさん
12/12/27 14:23:49.90
みんな冷静になって欲しい
そもそも>>65はDBの説明なんかを求めてはいない

今後のためにもDB勉強しとけ>>65

108:デフォルトの名無しさん
12/12/27 14:29:26.98
Activityの遷移を行うときに親のActivityを閉じて、新しいActivityを親?(最上位)として表示させる方法はあるでしょうか?
Viewの切り替えでも良いのですが、既存のActivityを再利用したいためにこの方法利用したいと思います。

109:デフォルトの名無しさん
12/12/27 14:58:05.10
>>108
元の奴finishすれば?

110:デフォルトの名無しさん
12/12/27 15:07:08.89
>>109
ありがと。 
言われてみればそりゃそうだw

111:デフォルトの名無しさん
12/12/27 15:47:05.10
2chmateを最新版に更新したら、
スレの更新などの後で表示される
Toastのような表示が、
単なるフェードイン、アウトではなく、
画面最下部から上方向にスライドしながら
表示され、消えるときは下方向に
スライドしながらフェードアウトする
ようになった。
こういう表示の仕方ってどうやるの?

112:デフォルトの名無しさん
12/12/27 16:10:27.10
>>111
PopupWindowにアニメーション付けてるだけじゃないかな

113:デフォルトの名無しさん
12/12/27 16:38:37.33
>>112
うーむなるほど、ありがとう。

114:デフォルトの名無しさん
12/12/27 18:19:54.87
contextには何が入ってるのでしょうか?

115:デフォルトの名無しさん
12/12/27 18:24:33.22
夢と希望が入っています

116:デフォルトの名無しさん
12/12/27 18:28:13.24
リストビューからあるデータをクリックして、DBとリストからそのデータを削除したいんですがどうすればよいのですか?
削除したいデータのIDを取得すればいいと思うのですがその方法がわかりません
リストビューに表示したいのはa,b,cの3つですが下記の取得する列に_idを追加すると表示せざるをえなくなってしまいます
仮に_idを追加したところで、対象データをクリックした際にidを知る方法もわかりません・・・


String sqlstr = "select * from logtable where day='"+val_day+"'";
c = db.rawQuery(sqlstr,null);
adapter=new SimpleCursorAdapter(this,R.layout.list_item,c,
new String[] {"a","b","c"},
new int[] {R.id.item_a, R.id.item_b,R.id.item_c});
test_list.setAdapter(adapter);

117:デフォルトの名無しさん
12/12/27 19:25:33.45
URLリンク(developer.android.com)


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch