Androidプログラミング質問スレ Part25at TECH
Androidプログラミング質問スレ Part25 - 暇つぶし2ch290:デフォルトの名無しさん
12/09/14 20:48:39.02
Mp = MediaPlayer.create(this,R.raw.test);
Mp.setLooping(false);
Mp.seekTo(0);
Mp.start();
このような感じでサウンド(音声)を鳴らしはじめて、口パクのアニメをするものを作っています。
ところが端末の機種やサウンドのフォーマットの違いで微妙に開始が遅れたりする場合があります。
確実な再生のスタートを取得できるような仕組みはあるのでしょうか?
音ゲーのような物も存在するようなので、方法はあると思うのですが…。

291:デフォルトの名無しさん
12/09/14 21:12:50.44
>>290
mp.getCurrentPosition()はどう?
これも遅延があるっぽいけど、start()で時間計測を開始するよりかは正確なんじゃなかろうか。

292:デフォルトの名無しさん
12/09/15 02:58:52.35
>>290
サウンドのprepare が終わるのを確認したり、progressが変更するのを確認したりしてからアニメをそれに合わせて同期

293:デフォルトの名無しさん
12/09/15 02:59:30.34
ていうかオーディオの遅延の管理ができるのは2.2か2.3からで、それもNDK使用が前提だった気がする

294:デフォルトの名無しさん
12/09/15 05:58:17.75
起動おせーとか思ってたら
100Gの仮想ディスクをせっせと
作ってたことならある

295:デフォルトの名無しさん
12/09/15 13:53:37.86
音楽再生アプリを作ろうと思ってるんですが
音楽再生について詳しく解説した参考書はありますか?

296:デフォルトの名無しさん
12/09/15 14:33:00.07
>>295
API使うなら数行だから解説も何もないだろう。コーデックとかの話?

297:デフォルトの名無しさん
12/09/15 15:13:47.44
>>295
先週、一週間かけて作ったばかりだけど
つまずく度にぐぐったら何とかなったよ

この↓サイトがソースコード付きで解説してくれているのでお薦め
URLリンク(www.atmarkit.co.jp)

298:デフォルトの名無しさん
12/09/15 17:28:25.78
書籍を買いましたが役に立つ情報が全然ありません。
全部読んだ後でも返本できますか?

299:デフォルトの名無しさん
12/09/15 17:48:46.69
はい

300:デフォルトの名無しさん
12/09/15 17:50:57.24
   ∩___∩         |
   | ノ\     ヽ        |
  /  ●゛  ● |        |
  | ∪  ( _●_) ミ       j
 彡、   |∪|   |        J
/     ∩ノ ⊃  ヽ
(  \ / _ノ |  |
.\ “  /__|  |
  \ /___ /

301:デフォルトの名無しさん
12/09/15 18:02:51.69
setTheme(android.R.style.Theme_Black_NoTitleBar);の反対がわかりまてん
教えてくだちゃい

302:デフォルトの名無しさん
12/09/15 18:26:28.72
>>301
反対とは?

303:デフォルトの名無しさん
12/09/15 18:45:17.41
getTheme

304:デフォルトの名無しさん
12/09/15 21:11:40.12
ライブ壁紙を作っています
横480ピクセルでホームが5面と仮定して横2400ピクセルの画像を onOffsetChanged() に引っ掛けて
一部分ずつ表示させるという処理をしたいのですが
onOffsetChanged()の最初のパラメータ(xOffset)から、その時表示すべき画像の部分の始点x座標を
求めることはできないでしょうか

ホーム5面の場合、0.00/0.25/0.5/0.75/1.00の値が返ってくるので
単純に画像の幅 * xOffsetだとうまくいかないのです
また、端末かホームアプリによってはピクセル単位でのオフセット値がうまくとれない
ようです

305:デフォルトの名無しさん
12/09/15 22:16:23.16
ホームの最大幅は画面横サイズの2倍 480pxなら960px
2400pxを何もせずにonOffsetChangedに引っかけたら0~960pxの範囲しか見えないんじゃない?
onOffsetChangedで返ってくる数値は
画面の左上がどこにあるのかっていう0~-480pxのオフセットと0.0~1.0の相対値だから
ここから移動範囲を0~1920になるように調整してやってみたら?

306:デフォルトの名無しさん
12/09/15 22:21:48.50
最近の日本の端末はonoffsetchangedがそもそも動かない事が多いよ。

307:デフォルトの名無しさん
12/09/15 22:51:14.79
>>305
大きな画像自体はインスタンス内にBitmapで持ってて、onOffsetChange()でこの画像のどの
範囲を描画すべきかを計算、その範囲画像をCanvasに展開というような動きを考えてます
なるほど、xOffsetを画像の幅ではなく、左上の値域の幅ととらえればうまくいきそうですね
ありがとうございました

>>306
端末とホームアプリによってはonOffsetChanged()は入るのですが、パラメータが
バラバラですね
全部0返してくるのもあるのは参りました
この手のを作る場合、皆さん自力で移動量とか取ってるのでしょうかね

308:デフォルトの名無しさん
12/09/15 23:44:33.31
0が帰って来るものはoffsetとstepともう1つのやつを組み合わせれば行ける。組み合わせ方は自分でやってね。
ver2.3までは何かしら戻ってくる。0なら0が戻ってくる。特殊なやつは最初の設定画面のクリエイト時に端末を取得してpreferenceに保存しとけばいける。
1番厄介なのはさっきも言ったけどonoffsetchangedがそもそも呼ばれない端末。メソッド内に何を書こうが関係ない。俺は一回ジェスチャーディテクターで何とかしようとしたが出来なかった。もし対応策か回避策が出来たら教えてくれ

309:デフォルトの名無しさん
12/09/16 01:59:12.66
>>308
すげー努力家

310:デフォルトの名無しさん
12/09/16 02:38:08.81
パッケージの中身(srcとかgenとか)配布してるとこあったからダウソして見たんだが
これらをそのままeclipseにインポートする方法ってある?

新しくプロジェクトを作ってjavaファイルの中身を移植してその他もできるだけ復元してみたがエラーでてだめだった


311:デフォルトの名無しさん
12/09/16 02:50:38.37
>>310
.projectってファイルがあればインポートできるとおもうけど
ない場合は、自分でプロジェクト作ってでてるエラーみながら
修復だな


312:311
12/09/16 02:54:29.66
念のため補足として
知ってると思うけど、.projectはファインダーでは
表示されません。
ターミナルで ls -laってやらないとみれない


313:デフォルトの名無しさん
12/09/16 07:28:19.25
>>304
0.0~1.0 * (壁紙の幅- 画面幅) が実際のスクロール量じゃないの?

314:デフォルトの名無しさん
12/09/16 10:26:15.85
初心者な質問で申し訳ないのですが…
プロジェクトのBuild SDKをSDK4.0.3にして
Minimum Required SDKをAPI 8 Android 2.2したら
2.2の端末でそのアプリを利用できますか。

表示に関してvalues-v11とかでレベルごとに設定すればいけるのでしょうか。

315:デフォルトの名無しさん
12/09/16 10:49:38.59
AndroidでBitmapのPalletを操作する命令を探しているんですが見つかりません。
知りませんか??

316:デフォルトの名無しさん
12/09/16 11:04:33.18
>>314
うん。ビルド時のターゲットは高め、minSdkVersionは低めにしとけばいい。
APIレベルに関する問題はLintで警告が出る

317:デフォルトの名無しさん
12/09/16 11:51:59.05
>>315
Pallet?

318:デフォルトの名無しさん
12/09/16 12:17:03.08
androidプログラムの初心者です。
最近勉強を始めているのですが質問です。
javaでプログラムを作ったことがあるのですが
そのプログラムをandroidでも動かしたいと思ったら
そのjavaのプログラムのソースコードを
androidのjavaファイルに流用したらいいのでしょうか?

319:デフォルトの名無しさん
12/09/16 12:20:32.79
>>315
URLリンク(developer.android.com)
にはインデックスカラーのピクセルフォーマットは存在しない。
デコード時にインデックス=>RGBの変換が行われてる

320:デフォルトの名無しさん
12/09/16 12:21:14.50
>>318
そのプログラムで使ってるJava APIライブラリの範囲がAndroidと同じなら、
適当に組み込んで適当に画面から呼び出せるようにすればいいよ

たいていそうなってないけど

321:デフォルトの名無しさん
12/09/16 12:30:23.95
>>318
androidでの開発はCネイティブでの開発より面倒くさい
javaだからって幻想抱いたら駄目だよ
MAC+Objective-Cなんて癖のある言語のiOSのが何倍も楽と言われているくらいだぜ?
開発の仕事でもandroidだけは経験者必須って条件での募集が多い

322:デフォルトの名無しさん
12/09/16 12:34:42.80
お前C使ったことないだろ

323:デフォルトの名無しさん
12/09/16 13:23:20.35
Cと比較するとアレだけど
Androidの開発環境が糞で、Javaが時代錯誤の化石言語だってのは同意

324:デフォルトの名無しさん
12/09/16 13:31:22.40
>>318
モデルとかnetまわりは割と使い回してる。もともとそういう設計にしてるからだけど。

325:デフォルトの名無しさん
12/09/16 14:50:51.27
ロジックベースではほぼそのまま流用できるけど
特定のフレームワークに依存してたりするとめんどい
後、標準APIレベルでも微妙に挙動が違ったりはする

326:デフォルトの名無しさん
12/09/16 15:12:17.17
おれAndroidとiOSとWPと全部開発やってるけど、Androidが一番安心できるわ

今から解像度変更に対応させられるiOSやあちこち出来損ないなWP7よりイイ
もちろんゲームやりたければ最初からネイティブコードでもやれる

Javaはマルチスレッド対応がしっかりしている
Javaはthrows宣言のないメソッドから出る例外が制限されている
Androidは解像度やスクリーンサイズをサポートする仕組みが充実してる

不満点はActivityManagerまわりがブラックボックスすぎることかな
現在のタスクスタックの状態くらい参照したい


依存ライブラリが違うのに既存コードを流用とかアホなことさえ考えなければ問題ないよ

327:デフォルトの名無しさん
12/09/16 17:05:06.32
AndroidでのSQLiteの使い方がイマイチわかりません。
オススメの参考書かサイトを教えていただけませんか?

328:デフォルトの名無しさん
12/09/16 17:12:14.58
エミュでCPU使用率が上がるアプリは
実機での消費電力が高いんですか?
また消費電力は少なめを考えたプログラムを作るべきなんでしょうか?
教えてくだちゃい

329:デフォルトの名無しさん
12/09/16 17:14:44.17
>>327
jdbcを使っても動くんだから無理にAndroidの基本機能で動かす必要は無い。
無能ならば無能なりに対処すれば良い。

330:デフォルトの名無しさん
12/09/16 17:17:40.86
>>328
>また消費電力は少なめを考えたプログラムを作るべきなんでしょうか?
そんなもん自分が何を作るのか次第だろう。
自分が考えるべきことをいちいち他人に指示してもらおうとする精神疾患は、
ゆとり教育のたまものなのか?

331:デフォルトの名無しさん
12/09/16 17:25:29.24
これからクワッドコアが主流になるかもしれないからエミュの負荷はあてにならないだぬ

332:デフォルトの名無しさん
12/09/16 17:42:45.83
JDBC使う方が情報も実績も少ないと思うが・・・

333:デフォルトの名無しさん
12/09/16 20:54:07.12
ListViewでfastScrollEnabledを設定した時に出てくる
太いつまみのバーを任意のデザインにしたい場合どうしたらいいでしょうか?
通常のスクロールバーは変更するオプションがあるみたいですが・・・

334:デフォルトの名無しさん
12/09/16 20:54:20.76
>>311
移植して文字コード狂ってるとこあったからそこ修復したがまだ少しエラーが残ってたから1つ1つ潰していったら動いた!
>>312←これはlinuxかなんかかな?とりあえず親切にありがとう


335:デフォルトの名無しさん
12/09/16 21:03:02.54
>>327
接続、切断、クエリ投げ以外はSQLiteやSQL全般の知識が参考になるかと

336:デフォルトの名無しさん
12/09/16 22:19:20.14
>AndroidでのSQLiteの使い方がイマイチわかりません。
なんだからAndroid以外の環境なら分かっていると言うことだ。
だったら素直にjdbcを使えばいいだけの話だろう。
SQLiteのソースを持ってきてndkから呼び出してもいいし、
好きなようにすればいい。

337:デフォルトの名無しさん
12/09/16 22:20:11.18
質問させてください
onDestroyをオーバライドしてファイルに保存する処理を書いたのですがホームボタンを押したときにはonDestroyは実行されずタスクが終了しても保存されていませんでした
馬鹿な質問だと思いますがアプリ終了時に自動的に保存するにはどうすれば良いでしょうか?
よろしくお願いします。

338:デフォルトの名無しさん
12/09/16 22:35:41.47
そもそもホームボタンを押すこととアプリ終了に何の関係があるの?

339:デフォルトの名無しさん
12/09/16 23:14:55.67
jdbc薦めるなよ…

340:デフォルトの名無しさん
12/09/17 00:10:15.28
>>337
ホームボタンを押したときに呼び出される
public void onStop()を使えばいいと思います。

341:デフォルトの名無しさん
12/09/17 00:21:27.44
ホームボタンを押した時はホーム画面が最前面に来るだけ、つまりホーム画面の裏に君のアプリがいる。
メモリを要求されてアプリが破棄されるか、コード内でfinish呼ぶか、タスクキラーに明示的に殺されないとdestroyは呼ばれない。
タスクキラーもガベージを呼ぶだけのものがあったりするし、他人の作ったタスクキラーを過信するのは禁物。

君の望むやり方は2つ。
①onstop、onpauseを使う
アプリの挙動を理解すべし
②ディスパッチキーイベント(だったかな?)を使う。
ホームボタンを押された時の挙動を変える
※google非推奨
俺は①をお勧めするよ。つまり基礎をやり直してねって事。

342:デフォルトの名無しさん
12/09/17 00:39:38.87
プリファレンスの値だけじゃなくてKeyだけ取得する方法ってあるの?

343:デフォルトの名無しさん
12/09/17 00:52:47.68
public void onKey()を使えばいいと思います。

344:342
12/09/17 01:16:58.97
>>343
それは私へのレス?
できるのですかそんなことが・・・

345:311
12/09/17 01:25:13.73
>>343
たぶん、キー違いかww


346:デフォルトの名無しさん
12/09/17 06:20:07.51
SharedPreferences.getAll でいい

347:デフォルトの名無しさん
12/09/17 13:43:35.44
Homeキーはキーイベント拾えないよ

348:デフォルトの名無しさん
12/09/17 17:27:25.03
特殊な方法をやれば拾えるよ。

349:デフォルトの名無しさん
12/09/17 18:21:30.05
特殊な方法を教えて下さい

350:デフォルトの名無しさん
12/09/17 20:04:36.51
ホームボタン押した時にデータを保存するだけならonpause()、onstop()、onuserleavehint()、onuserinteraction()、onsaveinstacestate()

URLリンク(y-anz-m.blogspot.jp)

それからキーイベントの取得はonattachedtowindow()をオーバーライドしてからやれば出来る

URLリンク(stackoverflow.com)

昨日も言ったけどgoogleはやらないでくれって公言してるし、マルウェアと勘違いされる事もあるらしいから、やっぱりキーイベントはやめた方が良いよ。
素直にpauseかstopで良いじゃん。しつこいよ

351:デフォルトの名無しさん
12/09/17 20:14:05.67
TimerのscheduleAtFixedRate()を使って繰り返し処理をしたいのですが、
端末がスリープモードになった時、指定した時間ごとに処理が実行されません。
指定した時間より後に複数回分の処理が纏めて実行されます。(時間のかかる処理ではないです。)

スクリーンを常時ONにすればキチンと動作するのですが、
スリープモードでも同様に動かす方法はないでしょうか?

timer = new Timer(true);
timer.scheduleAtFixedRate(new TimerTask() {
public run() {

// 繰り返し処理

}
}, 0, 5000);

352:デフォルトの名無しさん
12/09/17 20:29:35.38
>>351
にわかなので私の作った方法が合ってってのか分からないけど

タイマーをサービスで動かすってのはいかが?

メインアクティビティとインテントの応報で
実装がややこしくなるのが難点なんですが・・・

353:デフォルトの名無しさん
12/09/17 21:05:21.98
質問させてください
URLリンク(techbooster.org)
このサイト様を参考にさせてもらいながら進めていったのですが

DropboxAPIクラスのメゾットの利用方法がわかりません...

サイト様では FileActionMenuActivity.java を編集するとなっているのですが
新規でプロジェクトを立ち上げた場合ではどの部分にあたるのでしょう?

354:デフォルトの名無しさん
12/09/17 21:48:34.94
>>350
それらはHomeキーが押されたとき以外も呼ばれるからHomeキーが押されたときにしか処理したくない処理を実装するのには不向き

355:デフォルトの名無しさん
12/09/17 21:51:17.28
>>351
・Wakelockを使ってスリープさせないようにする
・AlarmManagerを使ってスリープ中でもイベントを起こすようにする

タイマーの間隔や継続時間等で適当な方をどうぞ

356:デフォルトの名無しさん
12/09/17 22:30:00.16
なんか目的と手段がごっちゃになってる気がするけど…

357:デフォルトの名無しさん
12/09/17 22:47:51.46
>>354
バックキーならセーブ出来たけどホームキーではセーブ出来なかったから両方ともセーブ出来るようにしたいんだろ?pauseとstopの何がダメなの?

358:311
12/09/17 22:51:13.84
>>349

ホームキーのハンドリング
ぐぐったら普通にでてきたけどこれでいい?

URLリンク(y-anz-m.blogspot.jp)


359:デフォルトの名無しさん
12/09/17 23:29:41.04
>
↑こういうエスケープ?された文字の戻し方を教えて下さい

360:デフォルトの名無しさん
12/09/17 23:32:31.77
unescapeurl とか・・・

361:デフォルトの名無しさん
12/09/17 23:48:42.30
何が聞きたいの?
エスケープシーケンス?
unicode?
ヒント少な過ぎて、さっぱり分からん

362:311
12/09/18 00:03:06.64
>>361
おれにはわかるぞ。
>>359のいいたいことが・・・

たぶんHTMLデコードしたいんじゃないか?ww
「>」>「>」
こう変換するAPIをさがしてるのだろう。


363:311
12/09/18 00:03:53.34
>>362
あ、エンコードされてしまったww


364:デフォルトの名無しさん
12/09/18 00:13:14.32
Html.fromHtml( getString(~))
これじゃだめなの?

365:デフォルトの名無しさん
12/09/18 00:59:40.09
自分だったら、明示的に保存するのはonBackPressedでやって、
それ以外はonSaveInstanceStateで一時的に退避してonCreateで復帰させるかな

onPauseやonStopで保存するってことはonResumeやonStartで
保存したデータ読み込むんだろうけど、ちょっと無駄が多い気がする

366:デフォルトの名無しさん
12/09/18 16:24:08.32
Androisは2枚のcanvasが乱ダムに表示されるのでclearがないと不便なんですが
どう構築すればいいんですか?canvasのレイヤを指定する方法が見つかりません

367:デフォルトの名無しさん
12/09/18 16:30:48.65
canvasとか使い捨てでいいじゃん

368:デフォルトの名無しさん
12/09/18 16:48:01.79
>>360-364

>>362さんのいうようにしたいんです。>>364で出来ますか?

20時くらいに家に帰るのでそれまで確認出来ません

369:デフォルトの名無しさん
12/09/18 17:09:07.19
じゃあ帰って確認しろ

370:351
12/09/18 19:42:02.29
>>352,355
WakeLockを使って思うような挙動になるのを確認しました。
ただバッテリーの消費が気になるので、AlarmManagerやServiceも試してみようと思います。
ありがとうございました。

371:デフォルトの名無しさん
12/09/18 23:30:56.62
外部jarをlibs配下にコピーしてAndroid Dependenciesにも表示されているのですが
そのjarがAPKに組み込まれず実行時にNoClassDefFoundErrorになってしまいます。
SDKのverは20.0.3です

どうすれば参照しているjarをAPKに組みこめるのでしょうか?

372:デフォルトの名無しさん
12/09/19 00:46:26.59
>>371
proguard有効にしてないよな?

373:デフォルトの名無しさん
12/09/19 01:52:22.39
ヒントが少なくて分からん。
android jar noclassdeffounderror
でググってみ。何パターンかの問題とその解決法が出てくるよ

374:371
12/09/19 02:51:07.40
eclipse4.2でビルドしています。
対象のプロジェクトから外部のjarファイルを参照しており
Eclipseから実行/デバッグした時にこのjarファイルがパッケージに含まれずに
エミュレータ上で対象アプリを起動したときにNoClassDefFoundErrorになります。
検索で見つかったことは一通り試しているのですがどうしてもパッケージに含まれないままです。

>>372
proguardは有効にしていないです

375:デフォルトの名無しさん
12/09/19 03:04:33.90
質問です。

RelativeLayoutが使えるバージョンとかって決まっているのでしょうか?
android1.6で使おうとすると、ソースが見つかりませんでした。のエラーが出ます。

ちなみに同じ事をLinearLayoutでやろうとするとうまくいきます。


376:311
12/09/19 04:26:46.67
>>374
eclipse終了させてターミナルから-cleanオプションつけて起動すると
うまくいくことがある。

eclipseのインストールフォルダで
./eclipse -clean

あとは、F5キーでプロジェクト更新したりとか
プロジェクトのクリーンを実行したりくらいかな


377:デフォルトの名無しさん
12/09/19 05:15:56.79
初歩的な質問で悪いんだが
画面下に
ボタンを横に4つ2行計8個
xml使わずに並べるにはどうしたらいい?

378:デフォルトの名無しさん
12/09/19 05:52:37.59
>>374
Java Build PathのOrder and Exportでチェック付いてる?

379:デフォルトの名無しさん
12/09/19 08:28:11.18
>>378
Android Dependenciesに含まれている場合はそれは不要のはず

どうしても解決しないならlibsに入れないで、ビルドパスに追加した後
>>378の設定やってもいけることはいける

380:デフォルトの名無しさん
12/09/19 08:43:17.36
>>377
xmlで組むのと同じことをJavaのコードでやればいい

381:デフォルトの名無しさん
12/09/19 08:58:37.29
>>377
普通にLineraLayoutをnew して Activity#setContentView に渡す
そのLLの中に好きなようにView階層を組んでいく

setLayoutParams でぐぐれば例はいくらでも出てくる

382:デフォルトの名無しさん
12/09/19 14:53:36.40
実機でも遅い気がするんですが仕様ですか?
でもグリグリ3D動かしてるゲームとありますよね?
Android-Javaでどうやってあそこまでできるんでしょうか?
教えてくだたい。

383:デフォルトの名無しさん
12/09/19 15:03:18.46
>>382
OpenGLES使ってる?Javaでも割と速度出るよ
それでも目標速度にならない場合はNDK一択。
凝った3Dで頑張ってるゲームはフルNDK開発と見て、まず間違いないんじゃないかしら

384:デフォルトの名無しさん
12/09/19 19:12:21.25
文字列の入力とリストからの選択が出来る custom preference ってどこかに落ちてませんかね?

385:デフォルトの名無しさん
12/09/20 00:20:15.41
 android初心者なので、もしかすると根本が分かってないかもしれませんが、よろしいでしょうか。

 今現在、クラスAで画面を作り、LinearLayoutにクラスBで作ったTextViewを貼り付けているのですが、
このTextView(クラスAのobj_tv1、またはobj_tv2)がタッチされた時、クラスA側でobj_tv1、または
obj_tv2がタッチされた事を察知させる方法は何かありますでしょうか。
 ちなみに、今は以下のような感じで作っています。(主要な部分を抜粋して記載しています)

public class クラスA extends Activity{
  private クラスB obj_tv1;
  private クラスB obj_tv2;
  private LinearLayout obj_LL;
  public void onCreate(Bundle savedInstanceState) {
    obj_tv = new クラスB(this);
    obj_LL = (LinearLayout)findViewById(R.id.xxxx);
    obj_LL.addView(obj_tv1);
    obj_LL.addView(obj_tv2);
  }
}

class クラスB extends TextView implements View.OnTouchListener{
  public boolean onTouch(View v,MotionEvent event){
    タッチした時の処理
  }
}

 質問の内容で不明な部分などありましたら、ご指摘頂けると幸いです。
 なにぶんandroidが初めてなもので、見当違いな事を言っているかもしれませんが、どうぞよろしく
お願い致します。

386:デフォルトの名無しさん
12/09/20 00:38:46.55
質問があります。
イヤホンジャックにイヤホンが刺さっているかどうかを判断したいのですが、なにか方法ありますか?
AudioTrackで再生するときにスピーカーだったら再生せずに、イヤホンのときだけ再生させたいです。


387:デフォルトの名無しさん
12/09/20 00:47:34.35
>>385
static経由で無理矢理呼べるけど、クラス分けずに素直に匿名のリスナ登録するのじゃだめなのかな

388:デフォルトの名無しさん
12/09/20 01:12:43.88
>>385
クラスBにコンストラクタを追加して引数でクラスAのインスタンスを受け取って
クラスBから好きな時点で好きなようにクラスAのメソッドを呼べばいい

389:デフォルトの名無しさん
12/09/20 01:18:24.88
コンストラクタって何ですか?

390:デフォルトの名無しさん
12/09/20 01:54:03.86
>>389
せめてぐぐってから質問しろ

391:385
12/09/20 02:41:13.90
>>387
 static経由というのは、クラスA、クラスBのどちらに変数(メソッド?)を作ったらいいのでしょうか。
 基本的な質問かもしれません、すみません。
 あと、クラスを分けずにとのアドバイスですが、クラスBのプログラムも長くなっているので今から
クラスAに移動すると、正直どこをどう修正すればいいかわからない状況なので、できれば現状のままで
追加できるコードを探したいのですが・・・

>>388
 クラスA側で以下のように書いて、

 Intent obj_intent = new Intent(クラスA.this, クラスB.class);
 obj_tv = new クラスB(this, obj_intent);

 クラスB側のコンストラクタで以下のように受け取ればいいのでしょうか。

 public クラスB(Context context, Intent lo_int)

 書いててみましたが、lo_int の使い方がよくわかりませんでした。
 「lo_int.メソッド名」という書き方ではないんですね、googleでインスタンスやオブジェクトの受け渡し
について検索すると画面遷移の話ばかり出ており、私がやってるのと違うので余計にわからなくなりました。
 申し訳ありませんが、コード例を挙げて頂ければ有り難いのですが・・・


 387様、388様、アドバイスありがとうございます。
 私の理解が足りないばかりに、再質問の形になりまして申し訳ありません。

392:385
12/09/20 02:49:25.14
 すみません、>>385の書き込みでクラスAで訂正がありました。

public class クラスA extends Activity{
  private クラスB obj_tv1;
  private クラスB obj_tv2;
  private LinearLayout obj_LL;
  public void onCreate(Bundle savedInstanceState) {
    obj_tv1 = new クラスB(this);         ←※訂正
    obj_tv2 = new クラスB(this);         ←※訂正
    obj_LL = (LinearLayout)findViewById(R.id.xxxx);
    obj_LL.addView(obj_tv1);
    obj_LL.addView(obj_tv2);
  }
}

 クラスBのオブジェクトを2つ定義しているのに作成が1つで、なおかつ「obj_tv」となっており、
1と2の番号をつけ忘れてました。
 そして>>391の書き込みでも388様への返事で同様に番号をつけ忘れてました。

 お詫びと訂正を致します、申し訳ありません。

393:デフォルトの名無しさん
12/09/20 02:51:17.39
インスタンスとインテントを混同してるとかwwwww

394:デフォルトの名無しさん
12/09/20 03:18:33.78
>>392
さすがになんか本買って仕切り直したほうがいいよ
Javaもよく分かってないのに、場当たりでググったりコピペしてたりすりゃそりゃ破綻するって。。

ここで全部説明貰おうとするより100倍早いかと



395:デフォルトの名無しさん
12/09/20 07:55:26.06
質問させてください(_ _)
ウィジェットを作っているのですが
メモリ不足とかタスクキラーとかのアプリで
システムがとまっちゃって変数とかも初期化されちゃうんで
保持しておきたい変数とかはSharedPrefarenceで保持しておくようにしたんですが
これで保持される人もいれば
保持されない人もいちゃうようなんです。
SharedPrefarenceにおいてもタスクキラーとか端末によっては消えちゃうもんなんでしょうか
ウィジェットのアプリで変数の中身とかを保持しておく良い方法はないでしょうか

396:デフォルトの名無しさん
12/09/20 08:02:18.62
すいません、Sharedpreferenceです

397:デフォルトの名無しさん
12/09/20 09:05:04.19
>>395
聞いたこと無いが・・・
どこかで上書きしてないか?

398:デフォルトの名無しさん
12/09/20 09:19:50.53
SharedPreferenceはファイルだから普通は残るよ

399:デフォルトの名無しさん
12/09/20 09:42:07.71
>>385
private クラスA _classA;
public クラスB(Context context, AttributeSet attrs) {
  _classA = (クラスA)context;
}

public boolean onTouchEvent(MotionEvent event) {
  _classA.touchClassB();
}

android初心者というよりJavaも初心者みたいだから、
まずはJavaを勉強するところから始めた方がいいよ


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