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

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

レス数が900を超えています。1000を超えると表示できなくなるよ。
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/
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を呼びます
0897デフォルトの名無しさん2010/12/30(木) 21:38:44
>885です
>>893 サンキュー

ついでに誰かddmsのあほなSDカードへのアクセスウエイトを
はずす方法を教えて
0898デフォルトの名無しさん2010/12/30(木) 21:53:00
≫895
Dtoはその範囲でとれる(getItemAtPosition )のですが、
Viewになるととれない状況です。

getChildAtで取れそうなのですが、
渡すindexが見つからず、うまくとれません。
0899デフォルトの名無しさん2010/12/30(木) 22:17:07
>>898
Viewが欲しいならadapter#getViewを呼び出しちゃえばいいんじゃね?
0900デフォルトの名無しさん2010/12/30(木) 23:04:35
>>882
自己解決
これはandroid側のバグらしい
0901デフォルトの名無しさん2010/12/30(木) 23:06:50
単純にmain.xmlとhoge.xmlを同時にonCreateで呼び出したいんですけど
setContentViewで1つか呼び出せません><
どうすればいいですか
0902デフォルトの名無しさん2010/12/30(木) 23:12:26
新しいxmlを作ってmain.xmlとhoge.xmlの両方を<include>で取り込む
0903デフォルトの名無しさん2010/12/30(木) 23:31:05
addContentView
0904デフォルトの名無しさん2010/12/30(木) 23:57:52
>>902
include ?
0905デフォルトの名無しさん2010/12/31(金) 00:03:14
addContentView だとlayoutResIDが使えないみたい><
0906デフォルトの名無しさん2010/12/31(金) 00:05:50
inflateしてViewにすりゃいい
0907デフォルトの名無しさん2010/12/31(金) 00:15:14
View view = this.getLayoutInflater().inflate(R.layout.hoge, null);
addContentView(view, null);

こうしたら予期せぬエラーで止まりました><
nullではない気もしますが、なかなかググっても参考になるサイトがみつかりません。。
0908デフォルトの名無しさん2010/12/31(金) 00:28:53
.       j//      /\ヽ∨//∠ヽ.    \\. \         ________
      _/      ∠≠ニ二ニ≧=<´  ヘ.     ', ヘ\ヽ.      /
 _ -‐ ´/  ,   -‐´、_, '⌒`^  、 \::\ } l     ヽヘ ヽ}     /         _|_ \
   ̄ フ´,  /             丶\::V| |      Vl       ,'             |____
.  //./                   `Vヽl |      ヽ ' .     |         /|    ヽ
  / ,イ/                    �Y/,       ヽ.\   |.   l       (_ノ  _ノ
  |/ /       |               ∨ヘ.      ト、 \_ |.   |
.  /     /  /  l:     /  l           ∨i    、   |  ̄   !  l       lヽ│/ /
  l│  /  イ  ,イ.    l  ト、ヽ     / | :l :|   |  l      |   ヽ_ノ   !ー┼‐ |‐┬
  | |   l_メ、」_,;./l     L  l V   ∧ /  :|/   ハ.  ト、   |          |./│ヽ l  |
  | ト.  |.____ ヽ    l´ヽ{ _⊥イ イ /   /    / l/⌒ヽ   .|  ー┼─ └── l  |
  | | ヽ | 、i┘::::i  \  | r┬┬‐┬ァ V  ,∧.   ,'  ´       |   ー┼−
  レ   ヽ!  ゝ- '   \l  i,.┘:::::iノ / ,/〉│ :| {         |    _⊥_     l   |
.      7/l/l/   、     `'ー‐ ' ∠≠r'ノ:jノ :| |         |   (__丿 ヽ    レ  |
     λ    `i`ァー-- 、  /l/l/l ∧‐'.:|:::|  ハ ',        |              l
      `、     レ'    ',     ,/| ::| :|:::| ./ ヽ_>      _|   __|_       _ノ
        ` = 、 '、    ノ  ,.イ∧'|:l.:/l:::|´            \    ._|
              `>-r  =ニi´、.,_`::: |:| { |:::l             |  .(_|
          _,.イ´ヽ.7   /  /:\;八:V:ノ                 |    ノ
       /7:::::!  ○O'´  /::::::::/ヽ.                ',
0909デフォルトの名無しさん2010/12/31(金) 02:03:24
AlertDialog.Builderでリスト形式で選択させるようにsetItemsを使っているのですが
それぞれの項目の左側に別々のアイコンって表示できますか?
0910デフォルトの名無しさん2010/12/31(金) 02:20:57
ウィジェット毎に表示を変えるにはどうしたらいいですか?
1つ目のウィジェットのテキストの色は黒、2つ目は白、とか変えられる様にしたいです。
0911デフォルトの名無しさん2010/12/31(金) 02:24:48
その二つのレイアウトをどのように組み合わせて表示するか次第だなあ
0912デフォルトの名無しさん2010/12/31(金) 02:28:04
>>898
>>896のやり方が正しい
タッチされたViewを直接変更したても、
スクロールして画面外出した後戻ってくると元に戻るぞ
Viewを直接変更しちゃダメ
getViewで返却するViewを変更する
09139102010/12/31(金) 02:41:00
レイアウトは同じだったり、変えたり出来ればと思っています。
0914デフォルトの名無しさん2010/12/31(金) 02:50:45
んじゃsetContentViewするのは変わらない部分だけで、
変えたい部分はViewGroupに対してaddViewやremoveViewすれば良い
09159102010/12/31(金) 02:59:57
ありがとうございます。
09167772010/12/31(金) 04:51:45
GPSの位置情報をコンテントプロバイダに保存するサービスを作ったのですが、
このサービスが取得した位置情報をリアルタイムにMAPに表示するには、
以下の方法のどちらが良いと思いますか?

1.サービスが取得した位置情報をブロードキャストして、MAPを表示しているActivityに渡す。
2.MAPを表示しているActivityがContentObserverを使ってコンテントプロバイダを監視して、
  新しい位置情報が追加されるごとにコンテントプロバイダから取得する。
0917デフォルトの名無しさん2010/12/31(金) 12:22:38
質問です
ExpandableListView,SimpleExpandableListAdapterあたりを使っていて、例えばボタンを押した時のイベント時に
親要素、子要素の追加や削除を行いたいのですができません。
ボタンを押した時に下のような実行時エラーが出ます。
java.lang.IllegalStateException: The content of the adapter has changed but ListView did not receive a notification.
Make sure the content of your adapter is not modified from a background thread, but only from the UI thread.

ListView did not receive a notification. って書いてあるので、ExpandableListView,SimpleExpandableListAdapter
のnotifyメソッドを呼び出してみたんですが、今度は下のような実行時エラーが出ます。
java.lang.IllegalMonitorStateException: object not locked by thread before notify()

どうしたらできるようになりますか?

0918デフォルトの名無しさん2010/12/31(金) 12:26:13
notifyじゃなくてnotifyDataSetChangedじゃないでしょうか
09199172010/12/31(金) 12:46:19
>>918
ExpandableListView,SimpleExpandableListAdapterにはnotifyDataSetChangedは無いと思います
0920デフォルトの名無しさん2010/12/31(金) 12:58:08
さ が せ
0921デフォルトの名無しさん2010/12/31(金) 13:11:17
ごめんなさい、SimpleExpandableListAdapterにありました。
ExpandableListAdapterにSimpleExpandableListAdapterのオブジェクトを持たせてたので気づかなかった・・・
そしてやりたい事もできました。ありがとうございました。
0922 [―{}@{}@{}-] デフォルトの名無しさん2010/12/31(金) 18:23:14
Mavenで開発しています。
eclipseのandroid pluginを用いたRunでは、Emulator/Deviceにデプロイして、自動的にアプリケーションを起動(すでに起動していたら再起動)してくれますが、それをMaven Android Pluginで行うことはできますでしょうか?

現在実行しているゴール : clean install android:emulator-start android:deploy -Dandroid.device=emulator
Maven Android Pluginのconfiguration :
<configuration>
<sdk>
<platform>4</platform>
</sdk>
<deleteConflictingFiles>true</deleteConflictingFiles>
<undeployBeforeDeploy>true</undeployBeforeDeploy>
<emulator>
<avd>***</avd>
<wait>20000</wait>
<options>-no-skin</options>
</emulator>
</configuration>
0923デフォルトの名無しさん2011/01/01(土) 00:19:43
あけおめ!
0924 【豚】 【273円】 2011/01/01(土) 00:26:02
あけおめ。
今年もエスパーレスに期待
0925デフォルトの名無しさん2011/01/01(土) 01:41:51
新年早々ですが、質問させてください。

AlertDialog.Builderを使ってsetPositiveButtonとsetNeutralButtonとsetNegativeButtonの3つを使い、真ん中のNeutralButtonはクリックされても閉じないように実装したいのですが、どのようにすればよろしいでしょうか。

DialogInterface.OnClickListenerを実装すると、onClick()が呼ばれるのですが、メソッド内でdismiss()を書いても書かなくてもダイアログが閉じてしまうため、何度もNeutralButtonをクリックされても閉じないようにしたいです。
0926デフォルトの名無しさん2011/01/01(土) 02:42:36
>>925
新年早々開発とは殊勝だな
0927デフォルトの名無しさん2011/01/01(土) 03:14:38
>>925
ダイアログは多分無理だと思う。
0928デフォルトの名無しさん2011/01/01(土) 03:16:36
>>925
なんかよくわかんねーけど、onClick()でfalse返すとか?
0929デフォルトの名無しさん2011/01/01(土) 03:17:26

教訓: 低知能者は試す前に口走る
レス数が900を超えています。1000を超えると表示できなくなるよ。