X



Androidプログラミング質問スレ revision55
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
垢版 |
2018/08/14(火) 10:49:08.05ID:GQVl6hxG
※プログラミング自体が初めて!なあなたには↓↓↓こちらへ
スレ立てるまでもない質問はここで 146匹目
http://mevius.2ch.net/test/read.cgi/tech/1487825717/
Eclipse統合M36【Java/C++/Ruby/Python/Scala】
http://mevius.2ch.net/test/read.cgi/tech/1503723668/
★★Java質問・相談スレッド180★★
http://mevius.2ch.net/test/read.cgi/tech/1492780397/
****オススメ関連リンク****
■ TechBoosterhttp://techbooster.org/category/android/tableofcontents/
■ Androidメモhttp://www.saturn.dti.ne.jp/npaka/android/index.html
■ 逆引きAndroid入門http://www.adakoda.com/android/
■ Androidプログラマへの道http://wiki.livedoor.jp/moonlight_aska/
■ Android Wiki*http://wikiwiki.jp/android/

****公式リファレンス****
■ Android developershttp://developer.android.com/index.html
■ ソフトウェア技術ドキュメントを勝手に翻訳http://www.techdoctranslator.com/
■ 日本Androidの会http://www.android-group.jp/
■ StackOverFlowhttp://stackoverflow.com/questions/tagged/android

****前スレ****
Androidプログラミング質問スレ revision52
http://echo.2ch.net/test/read.cgi/tech/1479305887/
Androidプログラミング質問スレ revision53
http://mevius.2ch.net/test/read.cgi/tech/1488052551/
Androidプログラミング質問スレ revision54
https://mevius.5ch.net/test/read.cgi/tech/1510691057/
0002デフォルトの名無しさん
垢版 |
2018/08/14(火) 10:53:24.40ID:UwXfpacN
O2
0007デフォルトの名無しさん
垢版 |
2018/08/16(木) 18:40:21.84ID:sDoG3cdo
俺のAndroidアプリ、ストアからインストールした直後数回は普通に立ち上がるんだけど、
何回かすると起動しなくなる
考えられる原因ってなんだと思います?
0008デフォルトの名無しさん
垢版 |
2018/08/16(木) 18:46:40.60ID:UmhzReQA
AndroidStudioからインストールした場合は?
エラーログは?
いったんそうなるとデータ削除しても立ち上がらない?
0009デフォルトの名無しさん
垢版 |
2018/08/16(木) 20:09:29.15ID:sDoG3cdo
>>8
気づいたのは、バックボタンと用意した終了ボタンで終了すると次立ち上がらないっぽい
タスクキルすると次も起動できる
ってことはちゃんと終了処理ができてないのかな
0011デフォルトの名無しさん
垢版 |
2018/08/16(木) 23:09:33.10ID:2CyRSyXb
Android8.0に更新してから「クラッシュレポートが〜」て表示されてウザいんだがこれどうすればいいん?
0012デフォルトの名無しさん
垢版 |
2018/08/16(木) 23:57:17.25ID:3h06Zvbw
具体的な原因箇所を指摘できないけど、
Android 8.0になってから、手動操作でアプリを落とせなくなった感触がある。

アクティビティのみであれば、いままで通りに動くが、
フォアグラウンドサービスなり、なんらかのサービスクラスを派生したスレッドが存在すると
ゾンビ化みたいな挙動を示すときがある。
スタジオを使っている場合は、デバッガが確実にkill -9しに行くようだけど、端末操作だと違った動きをする。

単純な推測、憶測のみで語れば、アクティビティだけを停止して、プロセスそのものは停止しないような制御をするようになった気がする。
過去のレガシーを引きずって、これに陥るとしたらが「アクティビティの破棄」が必ず発生する前提の作りをしているんじゃないかって思う。
何となくアクティビティの破棄(OnDestroy)が来ないタイミングが増えたような気がしている。
0013デフォルトの名無しさん
垢版 |
2018/08/17(金) 00:04:20.23ID:TP+ulg07
そう考える根拠は3つ
1) 実際に俺も同様な体験した事がある
2) 最近のドキュメントを読むと、やたらとアプリケーションコンテキストに誘導するような記述がある
 → プロセスとアクティビティは異なるという設計思想。 ウィンドウに喰われるリソースとプロセスが保持するリソース量は異なる
3) Unixを基礎にしているから、電力の最適化の観点で上記の設計は、メリットが多い

まあ、あくまで俺の見解。 個人的研究に基づく妄想。
0014デフォルトの名無しさん
垢版 |
2018/08/18(土) 20:27:37.91ID:1gLPW8Tg
以下のように記述した時に,どうしてgetCursor()を使えるのかわかりません.


getAdapter()の返り値がListAdapterでこれをSimpleCursorAdapterにキャストしているのですが,ListAdapterにないgetCursor()をどうして使えるようになるのでしょうか?

getCursor()自体はSimpleCursorAdapteの親クラスであるCursorAdapterにあってCursorAdapterの親クラスのBaseAdapterはListAdapterを実装しているところまでは分かったのですが,getCursor()を使えるようになる理由がわかりません...


public void onItemClick(AdapterView<?> parent, View view, int position, long id){


    @Override

    Cursor c = ((SimpleCursorAdapter)parent.getAdapter()).getCursor();

    c.moveToPosition(position);
0016デフォルトの名無しさん
垢版 |
2018/08/18(土) 20:45:49.37ID:1gLPW8Tg
コピペする時にミスりました
以下のようなコードです

@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id){


    Cursor c = ((SimpleCursorAdapter)parent.getAdapter()).getCursor();
 c.moveToPosition(position);
0017デフォルトの名無しさん
垢版 |
2018/08/18(土) 21:02:19.22ID:kqgWZSb1
SimpleCursorAdapter is CursorAdapter
getCursorを使う目的だったらCursorAdapterへのダウンキャストで十分
0018デフォルトの名無しさん
垢版 |
2018/08/18(土) 21:08:15.99ID:rejH9nbp
オブジェクト指向の理解が足りてないね
ポリモーフィズムとかのキーワードでぐぐれ
0020デフォルトの名無しさん
垢版 |
2018/08/18(土) 23:19:19.30ID:1gLPW8Tg
見る所間違っていて、この場合のgetAdapterの戻り値はListAdapterではなくTだったので普通に理解できました。お騒がせしました。
0021デフォルトの名無しさん
垢版 |
2018/08/18(土) 23:38:39.76ID:1gLPW8Tg
>>18
オブジェクト指向の言語は初めてなので理解はまだまだ足りていないと思います

レスの口振り的に戻り値がListAdapterの時も動作すると理解されたのだと思いますが、
後学のためにも解説をお願いします。

もし戻り値がListAdapterの場合はそもそもSimpleCursorAdapteにキャストした時点でエラーが出ると思うのですが違うのでしょうか?
0022デフォルトの名無しさん
垢版 |
2018/08/19(日) 05:02:17.24ID:lz4AfOwu
ListAdapterはinterfaceだから戻り値がListAdapterのオブジェクトであることはありえない
0023デフォルトの名無しさん
垢版 |
2018/08/19(日) 05:12:02.40ID:TF7KUy8J
ダウンキャストは危険な操作だ。静的コンパイル時に発見できず、ランタイムエラーを誘発する。通常はダウンキャスト前にinstanceof(Javaの場合)で型チェックしておく。まぁ、どちらにせよ結局はランタイムエラーをスローすることになるとは思うけど。
嫌なら自前でCursorListView作ってCursorAdapterを返すgetAdapterを実装しろ。このクラスで常にキャストを実行するようにすれば少しは安全になるかもしれない。
0025デフォルトの名無しさん
垢版 |
2018/08/20(月) 09:19:39.13ID:t2osJeRG
>>24
Androidはjvmなんて一度も使っていないし、DalvikランタイムやARTランタイムを
使わないC言語だけでのアプリならAndroid 2.3から可能になっている
0026デフォルトの名無しさん
垢版 |
2018/08/20(月) 19:17:12.73ID:TZ+dTlWK
>>24
VisualStudioで作れるよ。
出力されたスケルトン見て、ソッ閉じした。
ネイティブアプリケーションにしても、 ア クティビティのジレンマは回避できない。
0027デフォルトの名無しさん
垢版 |
2018/08/22(水) 19:20:04.65ID:1XDUu0BB
retrofit2で以下のような階層のリクエストパラメータをpostしたいです。

User
id
name
image(画像)
age
child
id
name
image(画像)
age

画像を送るため@multipartをinterfaceに付加していますが、この場合パラメータをはどのように作成していけばよいでしょうか?
引数に@PartMap Map<String, Object> hogeとして試しましたが、リクエストが送れませんでした。
(コールバックにてonFailure)
ご助言を頂けますと幸いとなります。
宜しくお願いします。
0030デフォルトの名無しさん
垢版 |
2018/08/23(木) 21:38:06.70ID:H8Gnu4tL
よろしくお願いします。

1  public class MainActivity extends AppCompatActivity{
2  ・・・
3  Gview gView=new Gview();
4
5  public class Gview extends View{
6    public GameView(Context context){
7      super(context);
8      TextView textView =(TextView) findViewById(resID);
9      textView.setText("***"); }}}

とすると、コード上はエラーにならず、アプリケーションの起動エラーとなります。
9行目の textView.setText("***");を削除すると起動します。
エラーはNullpointerExceptionで、textViewがNullになってしまっています。
8,9行目のコードをMainActivity下の3行目あたりに移して実行すると、エラーは生じません

なぜ、Gviewクラスのコンストラクタ内ではNullエラーになるのでしょうか?
他のスレで教えていただいたのは、ViewクラスのfindViewByIdを呼んでいるとのこと。
GviewでsetTextする方法を教えてください。
0032デフォルトの名無しさん
垢版 |
2018/08/23(木) 22:31:08.10ID:03LwByUR
>>30
どうしてもやりたいなら
8      TextView textView =(TextView) ((AppCompatActivity)context).findViewById(resID);
のような感じでいけると思うけど、おすすめしない
0039デフォルトの名無しさん
垢版 |
2018/08/24(金) 10:13:58.44ID:w6TGMm6e
kotlin書きやすいしGoogleもやる気みたいだからこれからはkotlinで書いたほうがいいんじゃ?
公式のサンプルコードも最近はkotlin多いし
0043デフォルトの名無しさん
垢版 |
2018/08/24(金) 13:40:45.56ID:MEArwTdw
>>40
それはKotlin作ってるのがGoogleではないからでは?
Javaと同様にJetBrainsが後から対応させれば良かろう。
0046デフォルトの名無しさん
垢版 |
2018/08/24(金) 16:17:22.54ID:qtcVVPQQ
fuchsiaでosのアップデート権限をキャリアからとりもどすのが最大の目的(適当)
0047デフォルトの名無しさん
垢版 |
2018/08/24(金) 16:56:35.17ID:j2NkzGQ/
いつも画面のレイアウト作るのが面倒なんだけど、
なんか良いツールとかありませんか?
0052デフォルトの名無しさん
垢版 |
2018/08/25(土) 06:27:33.16ID:1ijaxKkc
>>30
Gviewのコンストラクタはそういうことをしてよい場所ではありません
TextViewとGviewはともにViewというお母さんを持つ姉妹です
あなたはその妹のおなかのなかで姉を誕生させようとしている変人です

あなたが理解すべきことは
コンストラクタの役割
publicクラスの作り方
View継承クラスは何をしたいときに作るものなのか
の3つです
0054デフォルトの名無しさん
垢版 |
2018/08/25(土) 09:57:07.71ID:y9XpX7TK
ViewとViewクラスは違うのでViewクラスにViewとしての理念を適用してはならない、というなんかこうめんどくさいやつだな
0055デフォルトの名無しさん
垢版 |
2018/08/25(土) 09:57:44.14ID:Zsxg3YBN
>>30
メンバー生成と同時に実体化するとonCreateの前に走ってエラーになったよ
中の人の準備の都合だろうね

onCreateのなかでgView=new Gview(); するとよい
0058デフォルトの名無しさん
垢版 |
2018/08/26(日) 03:37:18.42ID:BKGHUMiF
>>53
「gViewのコンストラクタ」で他のview を生成しid参照することがおかしいということを質問者にざっくり理解してもらいたいだけ

質問者のgViewがViewGroupの継承クラスだとはとても思えないし
0059デフォルトの名無しさん
垢版 |
2018/08/26(日) 08:41:39.90ID:8NHhsyIb
皆様ありがとうございます。
基本的な理解が足りてないようでとても勉強になります。
スッキリ読んだだけだと、そういうセンス的なところが身につかないのかな?
とにかく、とても参考にさせていただきました。
0060デフォルトの名無しさん
垢版 |
2018/08/27(月) 05:58:40.33ID:yeBVo4vF
教えてください。
WebViewでsaveWebArchiveしたファイルを、loadurlで読み込むのですが、webページとして表示されず、テキスト表示なります。
うまく読み込む方法はないでしょうか?
##保存
webview.saveWebArchive("適当なURL")
##読み込み
webview.loadUrl("上記URL")

webview.loadDataWithBaseURL("上記URL", null, "application/x-webarchive-xml", "UTF-8", "上記URL")

## 確認したところ
teratail、スタックオーバーフロー、そのほか個人ブログなど

##開発環境
android 8.0(P10 lite)
0062デフォルトの名無しさん
垢版 |
2018/08/28(火) 19:46:10.63ID:QHXGp2cE
>>45
ページ数をどうやって数えた気分になっているのか。
Googleに表示された検索ヒットページ数は、完全な虚偽表示だぞ。
そのまま1000ページ目まで捲ればわかる。
大抵は14ページから20ページで終るから
0063デフォルトの名無しさん
垢版 |
2018/08/28(火) 19:49:19.72ID:C1AWmFJx
>>62
それ同じやつ表示しないようにしてるからでは?
最後まで行くと同じやつも出すリンク出てくるよ。
0064デフォルトの名無しさん
垢版 |
2018/08/28(火) 21:40:21.26ID:QHXGp2cE
>>63
うん。表示されたページ数を信じる点がスレ住人にしては、素朴だなーって趣旨。
0065デフォルトの名無しさん
垢版 |
2018/08/28(火) 21:46:03.64ID:QHXGp2cE
「確かめようがない情報は、嘘を書いても損失がない。従って何をいっても表示しても規制、誘導してもよい」
それがGoogleダークパタンの根っこにある彼等の共通理解。
0066デフォルトの名無しさん
垢版 |
2018/08/28(火) 21:50:24.13ID:QHXGp2cE
だがページ数の欺瞞でわかるように、確かめる術をみえない所に散りばめてアリバイを作る。
ほら確認すれば、わかりますよニヤニヤ(無能w)

これがGoogleの本質。
0068デフォルトの名無しさん
垢版 |
2018/08/29(水) 16:59:10.02ID:NIus7JyG
ググルの情報の真偽はともかく、一応ググルと違うデータベースを
使ってるbingで検索すると結構違う結果になるし、リンク切れを
起こしてるページもbingだと接続できないけどググルだとAdSenseの
ページが表示されたり怪しいことは怪しいっていうか、色々ググルで
情報が加工されてるような感じはあるね
0069デフォルトの名無しさん
垢版 |
2018/08/29(水) 19:08:18.62ID:rr2ZC/zS
MainActivityで、findViewById(R.id.radioButton);
で取得したButtonビューの、◎ボタンの色を変えたいのですがコードを教えてください
あと、同じく丸いadioButtonを□にしたりできませんか?
0071デフォルトの名無しさん
垢版 |
2018/08/30(木) 16:07:12.92ID:j0LInzoV
1 RadioButton radioButton=findViewById(R.id.radioButton);
2 radioButton.setBackgroundColor(Colorrgb.(255,255,255));
で、バックグラウンドの色はセットできますが、
同じような書式というか丸ボタンの色を変えられるメソッド、
例えば、setButtonColor(…); のようのってないのでしょうか?
0073デフォルトの名無しさん
垢版 |
2018/08/30(木) 19:25:14.45ID:dIvnt+Nr
Admob広告外し対策にはどのような方法がありますか?
何か有効な情報ページないですかね
0074デフォルトの名無しさん
垢版 |
2018/08/30(木) 19:34:18.73ID:E3QEVpGN
>>73
そもそも、そのアプリはそんなにダウンロードされてるの?
対策するのは、その後でも良いような?
0075デフォルトの名無しさん
垢版 |
2018/08/30(木) 21:53:50.24ID:37ILbh01
コンソールで使うJavaのプログラムを移植したいのですが
アプリ内で標準入出力を扱うにはどうすればいいですか?
0076デフォルトの名無しさん
垢版 |
2018/08/31(金) 09:38:01.19ID:mdi0t6di
>>73
逆に広告を表示することで機能を追加するアプリならみたことある
広告が表示されてるかきちんと判定できればこういうやり方もありだなあと
0077デフォルトの名無しさん
垢版 |
2018/09/01(土) 21:19:04.69ID:G8bIZR9O
onAdLoaded() が呼ばれたからといって広告がきちんと表示されてるとはがぎらないってことなのだろうか?
改変したのはこれが呼ばれた上で広告が表示されないとか?
0078デフォルトの名無しさん
垢版 |
2018/09/03(月) 15:33:48.23ID:PWt9xC94
スピナーを付ける時、デフォルトだと右側に▼が付くけど、
android:backgroundでレイアウト.xmlを指定すると消えてしまいます。
▼を表示させるか、レイアウトに▼(に近い形)を追加する方法は無いでしょうか?
0079デフォルトの名無しさん
垢版 |
2018/09/03(月) 23:46:47.84ID:3bxeW9oH
>>77
後付けで如何様にも変更される。
2017年のインタースティシャル広告をペナルティとか。
0083デフォルトの名無しさん
垢版 |
2018/09/06(木) 11:22:26.51ID:yhMxbLes
>>79
onAdLoaded()がだめということは結局広告がきちんと表示されてるかどうかを判別する方法はないってことなんですかね?
何か他の方法はないものだろうか…
0084デフォルトの名無しさん
垢版 |
2018/09/06(木) 11:37:37.59ID:ZcSEFoVt
Timerの中でrunOnUiThreadを実行する時、
runOnUiThreadの中身が重いと、複数回実行してしまうことってありますか?

Timerを1秒毎にscheduleAtFixedRateで実行して、
runOnUiThreadの実行回数を見ていたら、
同じ秒数にrunOnUiThreadが2回発生している現象が見られました。
とりあえずrunOnUiThreadの中身を整理したところ直ったのですが、
原因が不明でスッキリしなくて。
漠然とした質問ですいませんが、よろしくお願いします。
0086デフォルトの名無しさん
垢版 |
2018/09/06(木) 19:04:24.74ID:06r0xkCk
>>84
----+----1----+----2----+----3
----------やれ------やれ------やれ
----------はい---------おわた
やれは定期
ハイカラおわたは処理時間

やれはキューされる。
よっておそけりゃ直ぐくるというなら、そういうことかと。
0087デフォルトの名無しさん
垢版 |
2018/09/06(木) 21:01:09.32ID:mh3HShQw
そもそも、runOnUiThreadで重い処理やっちゃダメだろ。
0088デフォルトの名無しさん
垢版 |
2018/09/06(木) 21:47:23.26ID:66ZeTnAD
GDPRとConsent SDKについて質問です。
ttps://qiita.com/tokisuzume/items/de41f901ce772c7880c4
この解説ページ見てるのですが、選択フォーム表示でNOを選択すると
非パーソナライズ広告の表示に’同意のボタン’が出てきますよね。
EUの人がこちらを選んでAdMobの非パーソナライズ広告を表示すれば制裁の対象にならないのでしょうか? …@
いっそのことヨーロッパの人には全部非パーソナライズ広告にしてしまえばと思うのですが
こうするとなにかデメリットでもあるのでしょうか? …A
またプログラムには default: // 同意が得られなかったのでアプリを終了
がありますが、選択ボタンには非パーソナライズOKの選択ボタンはありますが他に
同意しない(拒否)の選択ボタンはありませんよね?
拒否で終了へ向かうにはどういう操作をすればいいことになっているのでしょうか?(それとも実際はないのか?) …B
@ABの3つについてお願いします。
0090デフォルトの名無しさん
垢版 |
2018/09/06(木) 22:17:57.69ID:eiVFavM9
>>88
ひとつだけ
.withAdFreeOption()を有効にすれば『同意しない』ボタンがでるよ
自分はこれで有料版へのリンクもしくは終了させてる
0092デフォルトの名無しさん
垢版 |
2018/09/06(木) 22:55:55.13ID:5iTUsHl5
>>90
出ました。ありがとうございます。
そのサイトのプログラムでは初回の選択後、2回目からは
onConsentFormClosed()で必ず case NON_PERSONALIZED: が呼ばれてしまいますが
1回目の選択を保存しておいてここでロードしてその内容で自分で設定しないといけない感じなんですかね
0093デフォルトの名無しさん
垢版 |
2018/09/06(木) 23:18:14.79ID:FxYJjFQD
訂正 onConsentFormClosed()で→onConsentInfoUpdated()で

ボタン文変えるには
/app\build\intermediates\assets\フォルダ内のconsentform.htmlを変えればよい。
とあるけどこれも日本語の解説サイトほとんどないなあ。
0094デフォルトの名無しさん
垢版 |
2018/09/07(金) 00:24:58.82ID:kBozhQLt
サーバがUNKNOWNを返したらダイアログを表示するというロジックなので、サーバの応答次第では毎回ダイアログが表示されるということもありうる
これを避けるにはアプリ側でもフラグをもってダイアログ表示の制御をしたほうが良いと思う、サーバ側のバグはこちらではどうしようもないから
0095デフォルトの名無しさん
垢版 |
2018/09/07(金) 10:39:49.42ID:HBOXXdzp
同意しないで終了するボタンつけた方がいいかな
さすがに欧州の人も同意フォームに見慣れてきて
バックボタンが効かなくてムキー☆1ってなることはないと思うんだが
0096デフォルトの名無しさん
垢版 |
2018/09/07(金) 10:51:24.77ID:a8gtf4oe
デフォルトの Pay for 〜 という名前のボタンじゃ押しにくいよね
これを Exit とかに変更する方法が書いてあるサイトないもんかなあ。
0098デフォルトの名無しさん
垢版 |
2018/09/08(土) 12:15:40.04ID:X7/7x4Za
レビューダイアログのライブラリってありますでしょうか
単にplay storeに飛ばすだけじゃなくて、
星を選択して結果を送れるようなものがいいです
0099デフォルトの名無しさん
垢版 |
2018/09/10(月) 16:03:21.34ID:skuEUIKW
Android上で動くAIアプリ作りたいんだけど入門用におすすめのHPとか参考書あります?
目標としては音声認識して回答を返せるようなの作りたいです
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況