トップページ⇒tech
1001コメント307KB

Androidプログラミング初心者質問スレ Part4

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2010/11/19(金) 16:33:21
前スレ
Androidプログラミング初心者質問スレ Part3
http://hibari.2ch.net/test/read.cgi/tech/1286357268/
Androidプログラミング初心者質問スレ Pert2
http://hibari.2ch.net/test/read.cgi/tech/1282716370/
Androidプログラミング初心者質問スレ
http://hibari.2ch.net/test/read.cgi/tech/1278560954/

関連スレ
【Google】Androidアプリ作成part6
http://hibari.2ch.net/test/read.cgi/tech/1286555951/
0797デフォルトの名無しさん2010/12/27(月) 22:58:23
>>759の手法だと眠らぬ端末になってCPUが24時間フル稼働とかマジブラック
でも鍵を解雇する手段は存在しない
だったら鍵の方をとりあえず働かして disableKeyguard() で即呼び戻す
誰の目にもつかないくらい早く瞬時に呼び戻せれば最高
0798デフォルトの名無しさん2010/12/27(月) 23:27:15
よく、分からないのですが、UIから独立ってのは、サービスと同じ意味ですか?
0799デフォルトの名無しさん2010/12/28(火) 00:17:31
>>798
そう
0800デフォルトの名無しさん2010/12/28(火) 15:04:37
Notificationを作ってNotificationManagerに投げると,ステータスバーの左のほうに
お知らせを出せますけど,右側のほうにアイコンとか表示するにはどうしたらいいんで
しょうか? iWnnの入力モード表示みたいなことをしたいのですが.

というかこのステータスバーの右側エリアには何か名前があるんでしょうか?
どういう情報を探せばいいのかそもそもよくわからんのです.
0801デフォルトの名無しさん2010/12/28(火) 15:58:54
>>800
OpenWnnのソースを落としてみたらいいんじゃない?
0802デフォルトの名無しさん2010/12/28(火) 17:56:18
>>801
そういえばそうですね.

というわけでOpenWnnのソースを見たところ,showStatusIcon()で
表示してるようだったので,真似したところちゃんと出てきました.
ありがとうございます.

ていうかこのメソッド,検索してもほとんど情報が見あたらないですね.
うーむ.
0803デフォルトの名無しさん2010/12/28(火) 18:52:30
ウィジェットをタッチしている間だけウィジェットの周りに
ボーダー線を付けたいのですが、どの様に実装すればいいのでしょうか?
0804デフォルトの名無しさん2010/12/28(火) 19:51:45
Drawer ResourceのShapeの章を見てなんとかなりました。
http://developer.android.com/intl/ja/guide/topics/resources/drawable-resource.html
0805デフォルトの名無しさん2010/12/28(火) 20:20:16
>>802
おお、そんなんあるのか
参考になりました
0806デフォルトの名無しさん2010/12/28(火) 20:40:45
>>802
好きなアイコン表示できるわけじゃないし、余り需要がないんじゃないかな
0807デフォルトの名無しさん2010/12/28(火) 20:48:00
再度別の質問です。
ImageViewのウィジェットでタッチすると画像が切り替わるようにしています。
画面を横に回転するとウィジェットが全く反応しなくなってしまいます。
再度新しくウィジェットを作り直せば動くのですが、今度は縦に回転すると
同じ状態になります。どこを見直せばよいのでしょうか?
0808デフォルトの名無しさん2010/12/28(火) 21:08:58
>>806
え?
res/drawable/にpngで用意したアイコンが普通に表示できましたよ?
0809デフォルトの名無しさん2010/12/28(火) 21:09:42
>>807
つ ローテート関連
08108072010/12/28(火) 21:25:46
>>809
回転した時にonUpdateやonEnabledが呼ばれないのですが、
他に別の所でウィジェットの再設定をしないといけないのでしょうか?
0811デフォルトの名無しさん2010/12/28(火) 23:44:28
thisの意味がいまいち分からないです(;o;)
自分自身を示すということですがいまいちつかめません(;´д`)
誰か教えてください
0812デフォルトの名無しさん2010/12/28(火) 23:54:36
俺もthisがいまいちわからん

サンプルみてもついてるのとついてないのがあるし
例えば
hoge = (Textview)this.findViewById(R.id.Hoge);

もあれば

hage = (Textview)findViewById(R.id.Hage);

どう違うの?
0813デフォルトの名無しさん2010/12/29(水) 00:10:27
this は自分自身なんです。
class MyActivity { ... } の中で this と書けば、それは MyActivity 自身なんです。
class MyView {... } の中で this と書けば、それは MyView 自身なんです。
new OnClickListener(){ ... } の中で this と書けば、それは OnClickListener 自身なんです。
0814デフォルトの名無しさん2010/12/29(水) 00:33:09
つまりthisは君であり私だ
0815デフォルトの名無しさん2010/12/29(水) 00:40:28
俺がthisだ
0816デフォルトの名無しさん2010/12/29(水) 00:41:11
this を引数で渡すってのは、自分に自分を渡すってことですかね?


0817デフォルトの名無しさん2010/12/29(水) 00:48:19
渡す相手が自分とは限らないだろ
もちろん自分に渡すこともあるだろうけれど
0818デフォルトの名無しさん2010/12/29(水) 00:53:57
それってどういう状況よ
自分に自分を渡さなくても自分は自分を持ってるだろ?
とか、書いてて禅問答みたいだ
0819 [―{}@{}@{}-] デフォルトの名無しさん2010/12/29(水) 00:55:15
Androidプロジェクトから別のライブラリを利用しており、そのライブラリでjava.util.MessageBundleを用いてライブラリ内に含まれるプロパティファイルを読み込んでいます。(MessageBundle#getBundle(bundleName))
通常のJavaアプリケーションから呼び出す分には問題ないのですが、Androidアプリケーションから呼び出すとMissingResourceExceptionが発生します。

ちょうどこちらのページで取り上げられている問題です。
http://markmail.org/message/eiivzrdtsbkhyogq

どうもResourceBundleのバグらしいのですが、みなさんはこれに対しどのように対応しているのでしょうか?
0820デフォルトの名無しさん2010/12/29(水) 01:06:35
それは本当に…自分ですか…?
0821デフォルトの名無しさん2010/12/29(水) 01:09:32
>>818
引数として渡す対象が自分だった場合にthisを渡すのであって、
プログラムの作りによっては違うものを渡しても良いんだぞ
自分自身しか受け付けないようなメソッドだったら引数自体不要だろ
0822デフォルトの名無しさん2010/12/29(水) 01:09:51
私だ
0823デフォルトの名無しさん2010/12/29(水) 01:41:38
なんだお前か
0824デフォルトの名無しさん2010/12/29(水) 01:45:19
× this
○ dis
0825デフォルトの名無しさん2010/12/29(水) 07:18:59
Activityなしのアプリは作成可能でしょうか
それとも、画面なしのアプリでも
とにかくActivityから始める必要があるのでしょうか

画面なし、起動したら処理をしてすぐに終了するようなイメージで、
そんなプログラムのサンプルがどこかにあるといいのですが、
なかなか検索しても見つかりません
0826デフォルトの名無しさん2010/12/29(水) 07:50:44
WiFiのonoffを切りかえてすぐ終了するアプリとかあるから,
作れるのは作れるんじゃない?
0827デフォルトの名無しさん2010/12/29(水) 08:02:43
その作り方がわからなくて。
OnCreateでSystem.exitを呼ぶと起動ですぐ終了にはなるけど
一瞬画面が開くエフェクトが見えて微妙です
0828デフォルトの名無しさん2010/12/29(水) 09:50:01
Activityの画面を透過させる方法もあるけどスマートじゃないな。
0829デフォルトの名無しさん2010/12/29(水) 10:02:49
Androidの話ではなく単にJavaの知識の問題だよと言われるかもしれないけど教えてください。
入門本を追っかけながら勉強してるんですが、その中にパスの描画というのがあって

paint.setStyle(Paint.Style.STROKE);
paint.setColor(Color.argb(255, 255, 255, 0));

Path path = new Path();

path.moveTo(110+0, 10+0);
path.lineTo(110+60, 10+10);
path.lineTo(110+20, 10+40);
path.lineTo(110+80, 10+50);
path.lineTo(110+0, 10+80);
canvas.drawPath(path, paint);

これで黄色いジグザグ線が描かれるのは理解したんですが、このあと更に

paint.setStyle(Paint.Style.STROKE);
paint.setColor(Color.argb(255, 0, 255, 0));

path.moveTo(210+0, 10+0);
path.lineTo(210+60, 10+10);
path.lineTo(210+20, 10+40);
path.lineTo(210+80, 10+50);
path.lineTo(210+0, 10+80);
canvas.drawPath(path, paint);

と書き加えて動作を見てみると、最初に描いたはずの黄色い線も全部緑になってしまいます
同じクラスの中で記述をしてるので、上から順番に命令が実行されて、変数?paintとpathはそれぞれ内容が書きかえられて
黄色いジグザグ、少し右にずれて緑のジグザグが描かれると思うのですが、そうならないのはどうしてでしょうか
ちなみに新しく Path path2 = new Path(); を宣言して、二回目のところの変数pathにかかわるところをpath2としてやると
正しく描画されることは確認しました
0830デフォルトの名無しさん2010/12/29(水) 10:14:31
>>829
もうほとんど気づいてると思うけど、path の内容が書き換えられてるのではなく
蓄積されてるからだよ。
一回目のdrawPath の後に、 path.reset(); をやれば黄色い線は上書きされない。
0831デフォルトの名無しさん2010/12/29(水) 10:20:36
>>830
なるほど理解しました、ありがとうございます
0832デフォルトの名無しさん2010/12/29(水) 10:26:23

ってことは、1回目のdrawpathはあっても意味ないんだ??
0833デフォルトの名無しさん2010/12/29(水) 11:06:11
理解してねえ
0834デフォルトの名無しさん2010/12/29(水) 11:11:58
>>833
上の例では実際には黄色の線も描画はされているけれど、
変数pathはリセットしないかぎり、追加の座標情報を蓄積してるので、
二回目の描画の時に変数paintで指定した色で二本の線を再描画した、
分けて描画したいならpath.reset()を使う、と理解したつもりですが、間違ってますか?
0835デフォルトの名無しさん2010/12/29(水) 11:42:39
>>825
どうやって起動するのが問題だな。
起動するにはアプリケーションランチャーに登録する必要があると思うけど、
それってmanifest.xmlのactivityのintentFilterに
<category android:name="android.intent.category.LAUNCHER" />
って書かないといけない。
そうなると必然的にActivityが必要になる。

と、ここまでAppWidgetがいいじゃないイカと思った。
ポチっと押して終わりなんて処理も画面無しで出来るから。
0836デフォルトの名無しさん2010/12/29(水) 12:01:26
いや、起動はブロードキャストでもインテントでもいいだろ
必要なものだけでは構成すればいい
0837デフォルトの名無しさん2010/12/29(水) 12:15:55
>>836
だから、AppWidgetがそのIntentを発行する部分だよね?
0838デフォルトの名無しさん2010/12/29(水) 12:44:39
>>837
ホーム置いて起動したいならAppWidgetを使えばいいってだけ
ランチャーから起動したいならActivity。画面が出るのが嫌なら、テーマでNoDisplayすればいい
本体の起動時に処理するならBroadcastReceiverだけでもいいし、ともかく用途に応じて選べばいい
アプリケーションにはActivityが必須ってことはない
0839デフォルトの名無しさん2010/12/29(水) 13:32:16
>>834 その理解であってるよ。
理解してない>>832とは別人だよね?
08408072010/12/29(水) 14:16:59
自分で定義したクリックアクションとRINGER_CHANGED_ACTIONをIntentに設定して、
RemoteViews#setOnClickPendingIntentに渡してますが、画面をローテートすると
自分で定義したクリックアクションのみ認識されなくなってしまうようです。
マニフェストには以下のように設定していますが、何か設定の仕方が間違っているのでしょうか?

<application android:icon="@drawable/icon" android:label="@string/app_name">
  <receiver android:name=".TestWidgetProvider"
    <intent-filter>
      <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
    </intent-filter>
    <intent-filter>
      <action android:name="android.media.RINGER_MODE_CHANGED" />
    </intent-filter>
    <intent-filter>
      <action android:name="com.test.WIDGET_CLICK" />
      <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
    <meta-data android:name="android.appwidget.provider" android:resource="@xml/appwidget" />
  </receiver>
</application>
0841デフォルトの名無しさん2010/12/29(水) 14:37:18
thisの使い方がいまいちわからんな。自分をわたすんならmeでいいんじゃね?
0842デフォルトの名無しさん2010/12/29(水) 15:01:04
Javaにmeは無いぞ
0843デフォルトの名無しさん2010/12/29(水) 15:04:36
thisわかんねー奴はjavaスレ逝け
0844デフォルトの名無しさん2010/12/29(水) 16:12:52
マインちゃん
08458322010/12/29(水) 17:10:09
>834
ありがとう、君のおかげで理解できた\(^-^)/
0846デフォルトの名無しさん2010/12/29(水) 17:54:28
this is it
0847デフォルトの名無しさん2010/12/29(水) 18:01:42
thisはメンバ変数でcontextで定義しておいて、onCreateで格納しておくと、onClickとかで使えるから便利。
0848デフォルトの名無しさん2010/12/29(水) 18:24:40
>>847
クラス名.this使え
0849デフォルトの名無しさん2010/12/29(水) 18:26:36
よくわからんが、thisは自身ならどこでもいつでも呼べるんじゃないのか?
格納とか、格納してonClickで使えるとかどう言う事?
0850デフォルトの名無しさん2010/12/29(水) 18:31:34
上にあった例だけど
hoge = (Textview)this.findViewById(R.id.Hoge);
hage = (Textview)findViewById(R.id.Hage);

この違いは何?
hogeにhoge
hageにhage
を入れてるだけだよね
0851デフォルトの名無しさん2010/12/29(水) 18:40:46
>>849
onClickListener使った場合、onClick内でのthisはそのListenerになる
そういう場合はクラス名.thisと明示的に示してやる必要がある
0852デフォルトの名無しさん2010/12/29(水) 18:41:36
>>850
その例だったらどちらの動作は同じ
0853デフォルトの名無しさん2010/12/29(水) 20:08:24
うん、今日もバカばっかだ
0854デフォルトの名無しさん2010/12/29(水) 20:46:45
>>850
上は
あれ?なんだっけ?とりあえず this. あ、これこれ。
0855デフォルトの名無しさん2010/12/29(水) 20:56:58
this.で始めると入力支援が今のクラスのものだけに絞れることくらいかな
0856デフォルトの名無しさん2010/12/29(水) 23:01:18
なんかthis で盛り上がってるな\(^-^)/
0857デフォルトの名無しさん2010/12/29(水) 23:01:51
finalでは盛り上がらないのか?
個人的には、アレの使いどころが謎すぎて…
0858デフォルトの名無しさん2010/12/29(水) 23:16:27
this is it,
0859デフォルトの名無しさん2010/12/29(水) 23:25:47
this is IT
0860デフォルトの名無しさん2010/12/29(水) 23:29:35
finalは高速化に関係するんじゃないのか?
0861デフォルトの名無しさん2010/12/29(水) 23:40:06
             /)
           ///)
          /,.=゙''"/             人人人人人人人人人人人人
         i f ,.r='"-‐'つ____     <                  >
        /   _,.-‐'~/__,  , ‐-\    <    こまけぇこ・・・ん?   >
        ,i   ,二ニ⊃(●). (●) \   <                  >
       ノ    il゙フ   (__人__)    \  YYYYYYYYYYYYYYYYYYYYYYY
      ,イ「ト、  ,!,!|     ' ̄ ̄`     |
     / iトヾヽ_/ィ"\           /


==========================
    l ヽ. |   |  |   |
.   | __| | __ | |^)_ |    ,-、
   _ |  | |   | .|ノ  |.    i  ヽ
  i'i. ヽ. -‐、 !   !-! ‐- ヽ.  〉、 l
 / _ ノ.ヽ. `' (ノo(ヽ?/ ヽノ (ノ |
 ヽ. ,`ヽ,ソ    )ノ   ノ/o   |
   \ '  / / l     ()ヽ l
    ヽ.   '    |  (⌒ヽ  |
     ヽ.     |   しノ  /
==========================
0862デフォルトの名無しさん2010/12/29(水) 23:47:34
テキストビューアみたいなのを作っているのですが,本の栞のように表示位置を記憶して,次回起動時に表示位置を復元するのはどのように実装すれば良いのでしょう?
現在,assetsフォルダにテキストファイルを置き,一行ずつ読み込んでScrollViewの中の一つのTextViewに表示させることはできたのですが,スクロール位置の保存や復元の方法がよく分かりません.
どなたかご教授のほどよろしくお願いします.
0863デフォルトの名無しさん2010/12/29(水) 23:52:36
みんな動作確認て実機でやってますか?エミュの方います?
0864デフォルトの名無しさん2010/12/30(木) 00:15:44
基本は実機(Desire)、互換性のテストに各バージョンのエミュレータで確認してる
0865デフォルトの名無しさん2010/12/30(木) 00:16:34
やはり実機だとさくさく確認できます?
0866デフォルトの名無しさん2010/12/30(木) 00:18:09
>>863
両方、サ店でコーディングしてて実機つなぐのめんどい時はエミュでやってる。
CPU i7 だから、糞ほど重いってこともないし。
0867デフォルトの名無しさん2010/12/30(木) 00:19:23
>>866
なるほど、やはり実機買うしかないのか。。。携帯変える気無いからおくで買うしかないか?
いくらくらいだろ。。。
0868デフォルトの名無しさん2010/12/30(木) 00:20:47
携帯中古屋でも売ってるだろ
0869デフォルトの名無しさん2010/12/30(木) 00:21:40
中古屋かぁ、、、田舎だからあるかわからないけど探してみるよ
0870デフォルトの名無しさん2010/12/30(木) 00:35:08
OSはUbuntuだが、エミュでサクサク動いている
CPUはCore2Duo
窓はまるで動かなかったがLinuxならいけるんじゃないか
0871デフォルトの名無しさん2010/12/30(木) 00:38:58
Linuxかぁ、窓しかないけどいっちょ挑戦してみようかな
デュアルブート決め込んでみようか
0872デフォルトの名無しさん2010/12/30(木) 07:41:20
PCスペックに余裕あるから、VMwareでUbuntu。
0873デフォルトの名無しさん2010/12/30(木) 08:19:53
>>870
ほう、いいことを聞いた。サンクス
0874デフォルトの名無しさん2010/12/30(木) 09:21:15
俺の周りは
Windowsに絶望 → Ubuntu
Ubuntuに疲弊 → Mac
のパターンが多いな
0875デフォルトの名無しさん2010/12/30(木) 09:48:55
俺は更に一周して結局Windowsに戻ってきたわ
何だかんだでWindowsが一番何でも揃う・・・
0876デフォルトの名無しさん2010/12/30(木) 09:52:59
でも、Winはいまだに不安定なんだよね。
もう一周いってらw
0877デフォルトの名無しさん2010/12/30(木) 10:19:47
不安定って言うのはどういうこと?
0878デフォルトの名無しさん2010/12/30(木) 10:38:44
ドロイド君はゴキブリなんでしょうか?
0879デフォルトの名無しさん2010/12/30(木) 10:39:17
ドロイド君は不敵な笑みを浮かべている・・・
0880デフォルトの名無しさん2010/12/30(木) 11:44:05
ドロイド君はいつも君の後ろにいるよ
0881デフォルトの名無しさん2010/12/30(木) 11:45:10
俺の後ろに立つな!
0882デフォルトの名無しさん2010/12/30(木) 12:09:23
日付が変わった時に処理をしようと思っています。
ブロードキャストの日付が変わった時の「android.intent.action.DATE_CHANGED」を利用しようとしてテストしました。
時刻を23:59に変更して0:00を自然に待つとレシーブに成功しますが
手動で日付を何回か変更するとレシーブできなくなります。
これってバグなんでしょうか?
0883デフォルトの名無しさん2010/12/30(木) 13:15:01
自分で作ってバグですかって聞いてどうする
0884デフォルトの名無しさん2010/12/30(木) 13:26:09
バグは自分のせいじゃなくてあんどろいどのせい!って言いたい
0885デフォルトの名無しさん2010/12/30(木) 14:47:52
エミュレータでSDカードにサブディレクトリを作成して
そこにデータをコピーできますか?

adb・ddmsともにサブディレクトリを作る方法が内容に思います。

よろしくお願いします。
0886デフォルトの名無しさん2010/12/30(木) 14:51:42
adb shell mkdir /sdcard/subdir じゃだめだっけ?
0887デフォルトの名無しさん2010/12/30(木) 15:17:43
プログラムから使うフォルダだったらプログラムから作れって事なんじゃないか
0888デフォルトの名無しさん2010/12/30(木) 16:26:11
DDMS のファイルエクスプローラで出来るだろ。
フォルダを消す方法が謎だが
0889デフォルトの名無しさん2010/12/30(木) 16:27:43
Z80互換CPUだろ、日立だっけ?
X68000にボード突っ込んでたな
0890デフォルトの名無しさん2010/12/30(木) 17:30:19
>>888
謎だなw
0891デフォルトの名無しさん2010/12/30(木) 17:31:18
64180
0892デフォルトの名無しさん2010/12/30(木) 19:22:23
>885です
>>888 それ本当?
具体的に教えて
0893デフォルトの名無しさん2010/12/30(木) 20:42:12
>>892
ヒント:ドラッグ
ヒント2:ドロップ
0894デフォルトの名無しさん2010/12/30(木) 20:47:50
listviewについて質問させてください。

要素クリック時(onItemClickにて)に、
現在のpositionより低い(高い)要素のviewを変更したい
のてすが、どのように他のview を取得すれば
よいか教えてください。

親であるlistviewは取得できたのですが、
そのさきでどのように取得すればよいか
分からなくなってしまいました。
0895デフォルトの名無しさん2010/12/30(木) 21:19:58
>>894
アイテム数を取得出来なかった?
その範囲でポジションを変更すればいい。
0896デフォルトの名無しさん2010/12/30(木) 21:20:17
Adapterの中身を変更してnotifyDataSetChangedを呼びます
■ このスレッドは過去ログ倉庫に格納されています