Androidプログラミング質問スレ revision54
■ このスレッドは過去ログ倉庫に格納されています
必要・不要ってより、そのdbの中身のインスタンスはどこで取得してるのよ??
// トランザクション開始
の直前でインスタンス生成して一時的にしか使わないならdb.closeしとけばいいだろうし。
dbのインスタンスを使いまわすならcloseしちゃまずいし。
それ次第だろ。 まぁ、俺の普通は一つのSQLiteDatabaseのインスタンスを使いまわすから、closeはしないで
使いまわすけど。SQLiteDatabaseはスレッドセーフになってるから、ばしばし色んなスレッドから
アクセスして問題ないし。 >>136
> SQLiteでdb.closeをし忘れたまま再度DBを開いちゃったりすると
> DBが壊れてしまう
そんなアホな... http://relog.xii.jp/mt5r/2010/10/android-2.html
このページのコード使ってアンドロイドスタジオで動かしたいんだけど、
javaはアンドロイドスタジオのプロジェクト作成機能で
ProgressCircleって名前で作成したんだけどXMLはどのようにファイルを作ればいいのでしょうか。 付属アプリじゃないカメラアプリならとりあえず正常に動作すると思って参考にしようとしたけど
どうやら付属のカメラアプリじゃないとまともに動かないっぽい
起動した直後に問題発生で終了する
今は付属カメラアプリのappファイル探してるけど見つからなくてつまづいているところ 今時SQLiteを生で書く馬鹿はいない
realmかormaかAACのroom使え デファクトのormはなんなん?
オプソライブラリいっぱいあって困る SQLiteじゃないとダメなら、Room一択。
NoSQLでも構わないなら、ObjectBox。
Realmは、Entityの継承縛りとマイグレーションが糞過ぎる。 Android Studioを3.0.1にアップデートしたら
use of overloaded operator '<<' is ambiguous というエラーが出てビルドが通らなくなりました・・・
エラー箇所:
AppData\Local\Android\sdk\ndk-bundle\sources\third_party\googletest\googletest\include\gtest\gtest-printers.h
解決策をご存知の方教えていただけないでしょうか? アプデ通知にndk使うなら2.3から上げちゃダメと但し書きがあったよ
関係ないが今ハマってるのがmacでjava 8u161 2 最新のパッケージでセットアップすると
色々こけるlinuxは平気なんだけどな AnkoでAnkoLogger使ってみたけど、verbose()とdebug()が反応しないのはなんでなんだ
それ以外はちゃんとログ出るのに >>145
取り敢えBuild->Clean Projectやろう >>146, >>149
レスありがとうございます。145です。
2.3から上げちゃいけないという警告があったのですね。全然気づきませんでした。
他アプリは3.0対応していたため(特にエラーが発生しなかったため)安易に上げてしまいました。
Clean Projectもやってみましたが状況に変化がありませんでした。 >>147
いまセットアップすると最新のSDKツール が落ちてくるんだがデバイスモニターが
java8要求してきやがるのよで入れても動かない古いの落とそうとしてもビルドツ
ールは選べるけどSDKツールは選べないっぽいしで
>146でjava8u162が悪いと書いたけど8u144もダメだったから多分SDKツール
かもね おい、おまえら教えろ
Androidのアプリを作ってみようと思っているんだけど、
最初に作る簡単なアプリってのはどんなのがいい?
Androidの特徴がわかり、かつ難しくないのがいいんだけど。
スキルとかはこんな感じです
・これまでの主な言語や環境 c#、asp.net、JavaScript(JQuery)、SQL(MSSQL)
・Android Studioを使用予定
・kotlinの言語仕様を一通り学んだのでkotlin使用
・HelloWorldはすでにやってみたので次のお題を探している TODOメモか日記帳
プログラミングの初心者じゃないならいきなり作りたいもの作っても良いんじゃないか HelloWorldの次なら電卓かな
Androidの特徴を掴むのなら、GoogleMapとGPSを使って、
自分が行った場所の記録アプリとかでもいいかもしれんが aideというAndroidのアプリをつかってるんですが
標準ライブラリのソースをみる方法ありますか?
スレ違いだったらすみません >>153
ありがとうイイネ
TODOの中身を表示させたり、削除、編集するクラスを作って
リストに入れて保持したりするんかな。わくわくするね
>>154
ありがとう
関数電卓なのは難しいけど、普通の電卓のようなのならいい練習になりそうだね
GPSに関しては実機がないから無理なんだよね
安い1万円以内のAndroid6.0ぐらいのスマホを購入するかなあ APIよりUI(フラグメントは後でいいけど)やらないと始まらんだろ。
今はGPSとかセンサー系もエミュレータでもテストできるけど、
やっぱり使ってて楽しいので実機がいい。 やっぱりいきなり作ってみるより、解説本やネットの情報をみて
そのAPIとかUIとかのを一通り学んだほうがいいのかなあ(´・ω・`) ガチなアプリ作るわけじゃないんだし両方とも作りながら試行錯誤したら良いんじゃない? 本2冊読んでclean-arcを覚えてからコーディングに入ったけど順調
作りながら学習だとコードがめちゃくちゃになってすぐに行き詰まる 他所で何か完成させたことあるなら本読みながらながら制作でいい
初めてなら好きなだけ本読めばいい読んでも出来るようになるとは限らないがな どうせお勉強が目的になっていて何も完成させられないに決まっている
作りたいものが何もないのにプロミングの勉強してても意味ない >>156
電卓はマジオススメやで
レイアウトの勉強になるし、応用で向きを変えたり設定で16進数電卓にするといい
(実際に向きが変わる毎に切り替わったらウザいが)
実機が無くてもこの辺りは勉強になる
特に他言語からJava(kotlinは知らんが)に来ると、byte型の扱いでイーってなるしw 作りたいものからライブラリ探してやるのが一番だと思う
今までアプリ使ったことあるならなおさら 何も理解してない素人ほど勉強に電卓作らせようとするんだよな。
電卓ってのはコンパイラの勉強する人が作るものだよ。 なんだかんだ言って、自分で使うようなアプリがベターだわな。
フリーだと何しているか信用できないメモ帳を自分で作るとか。 普段使いするけど痒いとこに手が届かないアプリって割とあるしね 普通のJavaみたいに
配列に入ってる文字列を一つずつ改行しながら表示するにはどうやればいいですか?
普通のJavaでは
for(int i=0;i < a.length; i++){
System.out.println(a[i]);
}
こうやると思うのですが
AndroidでTextViewでやるに
for(int i=0;i < a.length; i++){
mTextView.setText(a[i] + "\n");
}
自分でこうやろうとしても改行されず新しい下の方の文字列に上書きされてしまいます >>自分でこうやろうとしても改行されず新しい下の方の文字列に上書き
わかってんじゃん。君がやってる事は新しい文字列で上書きしてるだけ。
だから、やらなければいけないことは文字列を連結すればいい。
StringBuilder sb = new StringBuilder();
for(int i=0;i < a.length; i++){
sb.append(a[i] + "\n");
}
mTextView.setText(sb.toString()); // 連結した結果を表示 >>171
TextViewには、appendというメソッドがあるから。
あと、StringBuilderはCharSequenceでもあるから、toStringは激しく余分。 textviewの文字列の一部にダイアログを起動するリンクがあったとして、
それをespressoでクリックする方法ないですか? >>171
>>172
できました!ありがとうございました! >>172
横からだが今まで必ずtoStringしてたわ
勉強になりました メモリ足りなくなったなどでプロセスキルされて、再起動されるときに完全に初期状態で
表示する方法はありますでしょうか??
例えば、複数のアクティビティを遷移してバックスタックが空じゃないとき、再起動されると
バックスタックも完全に復元されますよね??
これを防ぎたいのです。
ユーザビィリティが悪くなるのは分かりますが、復元するのがめんどくさいので。 復元が標準でついてるのに、それを無視するスタイルで進めていくと、後々逆に面倒くさくなるぞ
負債が溜まっていく アクティビティ間やフラグメント間でのパラメータの受けた渡しがめんどくさいんです。
SerializableまたはParcelableでBundle経由で受け渡すと、受け取り側でdesrializeされた時に
何もしないと別のオブジェクトになったりして。
逆に、オブジェクトを直接渡さず、IDだけとか渡すのも色々めんどくさいしかけを作らなきゃいけなくて。 まじでAndroidの最大のウンコのなんですけど、この部分。
だから、システムによってプロセスキルされてメモリがぱーになったら、復元しなくていいから、
アプリを最初から起動してほしいんです(要はユーザーが最後に訪問してたアクティビテイとかは
全部復元しないで無視)。
マニュフェストのフラグ一発でできないんですかね? アクティビティとかいう考え方が面倒
画面ごとに要素を用意して面倒くさい listviewのケツにボタンかなんか配置しといてそれをクリックしたら追加読み込み実行みたいなことをしたいんだけど簡単にできる方法ありますか? 簡単の範疇に入るかはともかく
BaseAdapterを継承して最後に追加するためのボタンが来るクラスを作ればいいんじゃね 最後だったらswiperefreshじゃないだろう >>183
自分でCで作ってキルされりゃいいんじゃね >>184
無理してListViewに入れない方がいいよ。
ListViewの下にButtonをVisiblity.GONEで配置しておいて、listの最後を表示したらVisiblity.VISIBLEにする。
「listの最後を表示したら」については、OnScrollListnerのOnScrollで渡される引数で簡単に計算できる
(firstVisibleItem + visibleItemCount >= totalItemCount)。 >>187
それもそうだ混乱してた
簡単ではなさそうだけどswipeRefreshもbottomからswipe upで更新とかできそうだな recyclerViewにして一番下にprogressbarだけのviewを配置する レスありがとうございます
一番簡単そうな>>189で解決できました espresso test recorderでパスすべき場所が失敗したり、クリックが認識されなかったりで使い物にならん javaで計ってみただけなんだが
浮数の加算と除算の速度がほぼ同じで困惑してる
x86だと二十倍くらい速度差あったのに
armってそういうもん? webview.draw(canvas)でキャプチャしてるんだけどwebglがキャプチャできずに真っ白になるんだけどなぜ?
どうやったらwebglのキャプチャがとれるのだろうか >>154
>>164
>>166
ありがとう。とりあえず、今日、電卓を作ることができた。
10日ほどかかったわけだが、こんな紆余曲折を経て学習していった
リモートリポジトリを作成して、複数のPCで開発を進められるといいなということで
googleドライブにリモートリポジトリを作成してgitで分散バージョン管理ができるようになった
そのあとでUIの使い方が気になって、それぞれのUIの基本的なことを勉強した
すべてを理解したわけではないが、レイアウトとウィジェット的なものがなんとなく理解できた
そのあとのディレクトリ構成が気になって、フォルダ構成を学んだ
さらにレイアウトとリソースのxmlやソースが別々になってるので
AndroidにおけるMVCパターンも概略を知りたくなって少し調べた
その後に電卓を作ろうと思ってデザインを作るのにConstraintLayoutがよさそうだと思って
レイアウトを作る方法をいろいろ調べた
んで、その後に電卓用の計算したり表示したりするクラスをことりんで作って
実装して今に至る・・・
かなり回り道したが電卓はレイアウトの仕組みを知るのにはかなり役だったかな
んで、次は何がお勧めかな? お前のゴールはどこじゃ
ちゃんとそこに向かってんのか
ゴールなんてなくてただ何か作りたいだけならお題は自分で見つけることだ データバインディングとRxも学んだほうが良い
あとはやっぱり通信だな
githubクライアントとかいいんじゃないか
webapiも公開されてる >>197
なんか作りたいと思うときに、あまり障壁無く作れることができるようにしたいのがゴールかな
いろいろなことを知ることができたので、着実に進んでいるような気がしている
>>198
Rxってなに?(´・ω・`)
データバインディングはいくなりハードルが高い気がするけど何とかなるかな(´・ω・`) Rxもデータバインディングも開発を簡単にするためのアイデアだからハードル低いよ
わしも初心者の頃はこんな酷いプラットフォームでどうやって開発するんだと頭を抱えたものだが
RxやMvvmを覚えたらスムーズに開発できるようになった >>200
さすがアニキすごいっす!
これを作ることによって、Rx、データバインディング、MVVMの勉強になるぜ!って
いうアプリいうのがあったら教えてください! どっちもまだならdatabindingからやっとき
ハマりどころそんなないから
まずはfindViewByIdの置き換えから始めればコストも少ないよ GPSを使ったようなアプリもandroidらしくていいんじゃないだろうか
あとbroadcastreceiverとserviceも使ってみるべき Bluetooth関連のテストって実機でやってる?
エミュレータ―でも出来るのかな? btは実機使わないと予想外の問題が出て死ぬから絶対実機でやった方がいい
なお実機で使ってもよくわからないまま死ぬから使わないほうがいい エミュレータでどうやって無線を飛ばすんだ
その前にアダプタやGATTの取得とか確認出来んし
最初から実機必須 >>206
フライトシミュレータは空を飛んでるとか思ってそう w どんなコードだろうと最後には必ず実機でテストしてからリリースしてください。 BluetoothProfile.ServiceListener#onServiceConnectedは
端末本体のBluetoothを有効にしただけで実行されますか?
自作アプリのユーザーからBluetoothクライアント接続してないのに
機能が有効になったと言われて調査してますが全然分かりません…。 Bluetoothクライアントの接続状態関係なしに
BluetoothのON/OFFだけでも実行されてる事を確認しました。
BluetoothProfile#getConnectedDevicesで接続を見ないといけないんですね。 SDカードにファイルを保存したいんですが、
ロリポ以降の端末ではSAF経由じゃないと書けないんでしょうか?
Android/data/<パッケージ名>/files以下じゃなくて
任意のパスに書きたいです。
4.3までは何も考えずに(内部ストレージと同様の方法で)できました。 ヤフーメールのアプリとかはどうやってメールの着信を監視してるのでしょうか
バックグラウンドで定期的に問い合わせを行っているのでしょうか
その場合なぜシステムからキルされないのですか? サードパーティーが完全に自前でプッシュ通知を実現するには、
結局のところ、サービス/スケジューラを使うしか手がないでしょ?
GCM/FCM使う場合には、リスナー登録するだけで済む話だけど。 Paging LibraryはloadAfterとかloadBeforeはバックグラウンドスレッドで呼ばれるけど、
なんでloadInitialはPagedList作るスレッドで呼ばれるの?Googleの技術者死ねよ。 firebase使うとプッシュ通知もできたよね
ただ開発者サービス使うと古いバージョン使ってるユーザーとか
更新してもバグあったりしてアプリのせいにされたことあるからあんまり使いたくないんだが
最近は大丈夫なん? ボタンを押した時にThread.Sleep(1000)を実行するとLogcatに、
Skipped 60 frames! The application may be doing too much work on its main thread.
って出るけども、これはスレッドを止めてるから出る物と考えて良いのでしょうか? メインスレッド(UIスレッド)が終わってるのにUIのコードを実行しようとしてるから、じゃなかったっけ リリースビルドに失敗したときだけproguardの設定を追加してきたんですが、
リリースビルドに成功していたとしても、各ライブラリのgithubのページに書いてある
proguardの設定は全て記述するべきなんでしょうか プログラムというかAndroidの印刷APIに対応したプリンターってどんなのがある?
Androidとプリンターの関係が現在どうなってるのかいまいちわからないけど これをMZK-EX300Dに繋いだらAndroidからの印刷できますか? みんなkotlin使うの?
kotlinも
Flutter-Dart言語も
いかないでJava/dalvikに留まるのが一番いいような気がする kotlin使ってるけど、その理由は使ってみたかったから以外には特にないな
javaに留まっても全然良いと思う FlutterってNativeScriptに近い感じか?
ReactNativeはAndroidが弱いし、
Xamarinはネイティブ無視しすぎて、終わっとるし。 クロスプラットフォームは総じて糞と相場が決まっている 世間の人気アプリは大概両機種でリリースされておるが、
あれってどうやってんのかね?
やはりunityしかないのか
いやだなぁ、覚えたくない まともなアプリは全てそれぞれネイティブで作っている
ゲームに関してはUnityで共通化できる >>234
armでもintelでも動くandroidのこと言ってるの? ■ このスレッドは過去ログ倉庫に格納されています