久しぶりなのに短くてアレですが・・
Java の @Overrideはちゃんとつけた方がいいですね・・・。
インターフェースのメソッド(任意)を実装したつもりが一向に呼ばれないのでなんでや・・・と思ってたらメソッド名の綴りが間違ってました; @Override付けたらちゃんとエラーになりました。
プログラミングのことを書くぞ。I'm gonna write programming-related topics here.
久しぶりなのに短くてアレですが・・
Java の @Overrideはちゃんとつけた方がいいですね・・・。
インターフェースのメソッド(任意)を実装したつもりが一向に呼ばれないのでなんでや・・・と思ってたらメソッド名の綴りが間違ってました; @Override付けたらちゃんとエラーになりました。
I tried several methods to send an email with an attachment but all failed. Seemingly the image is attached but the content is empty.
I finally succeeded with the method of using ContentResolver.
I'll write about the detail maybe later...
画像を添付してメールを送る方法をいろいろ試していたのだけど、どれもうまくいかず。なんか中身が空になってしまう。
最終的に、ContentResolverを使った方法だとうまく行きました。
詳細は後で書きます。たぶん。。。
If you want to place your XML layout as the main contents of your activity just invoke setContentView( your_xml_resource_id ) and everything will be fine, but if you want it to be a subview of existing view the method is totally different:
((LayoutInflater)getSystemService(Activity.LAYOUT_INFLATER_SERVICE)).inflate( your_xml_resource_id , your_parent_view);
If you google around about this agenda you'll find codes like this:
View v = activity.getViewInflate().inflate(R.layout.buttons, null, null);
But this never works in my environment. May be Android API has been changed?
XMLレイアウトを、アクティビティのメインコンテンツにしたい場合は、 setContentView( your_xml_resource_id ) でイッパツなんですが、これを既存のビューのサブビューにしたい場合はかなりやり方が違ってきます。
((LayoutInflater)getSystemService(Activity.LAYOUT_INFLATER_SERVICE)).inflate( your_xml_resource_id , your_parent_view);
ところで、この件をググるとこんなコードが出てきますが、これはウチの環境では動きませんでした。
View v = activity.getViewInflate().inflate(R.layout.buttons, null, null);
これも2.xで変更された部分なのかな??
I had got an error while Eclipse was saving my workspace, and it had damaged the workspace file. As result everything seemed to have disappeared.
In my case the solution was pretty easy, just "import" my projects from the menu.
But one thing made me upset is: just when I have imported project no Perspective was opened and still nothing seen on the workspace. Selected Window > Open Perspective to open one and everything is back as before.
Eclipse が異常終了してしまった際にワークスペースが壊れてしまい、起動しても何も表示されなくなってしまいました。
今回のケースでは解決方法は簡単で、単にプロジェクトの import を行えばよい、というものだったんですが、一瞬青ざめたのが、インポートしたばかりのときは Perspective が開かれておらず、したがってプロジェクトは読み込んだもののワークスペースには何も現れない、という状態だった点。
Window > Open Perspective で Javaパースペクティブなりを開いたらちゃんと元通りになりました。
Android API changes very quickly.
Searching on the web about how to override the functionality of device's back button you'll find the code like this:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ( keyCode == KeyEvent.KEYCODE_BACK ) {
// do something;
}
return true;
}
@Override
public void onBackButton(){
// do something;
}
Android APIの変化は早いですね。
さっき端末の戻るボタンを乗っ取る方法を調べてたんですが、多くのページが
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ( keyCode == KeyEvent.KEYCODE_BACK ) {
// do something;
}
return true;
}
@Override
public void onBackButton(){
// do something;
}
In my current Android app I have several customized views that inherit View Class.
Each of them overrides onTouchEvent and tracks touch movements.
But one of them cannot catch MotionEvent.ACTION_MOVE and UP, while others can.
I did about one hour of try & errors to find that, if you return false for onTouchEvent's return value when you caught MotionEvent.ACTION_DOWN, tracking of touch event finishes and is no longer performed until your next touch.
I modified my code to return true when needed and it worked.
It may mean "You returned false? OK, this touch is something you don't need to care about, right? You'll never get troubled even if I stop giving further information about it."
It's understandable but...
今手がけているAndroidアプリでは、Viewクラスをカスタマイズしたクラスをいくつか使っているのだけど、そのうちのひとつのクラスだけがタッチイベントの MotionEvent.ACTION_MOVE と UP を取れない、という現象に遭遇。
他はちゃんと取れてるのになんでや?と思って悩むこと1時間あまり、やっと発見したのが、最初に MotionEvent.ACTION_DOWN を受け取ったとき、onTouchEventの戻り値に false を返してしまうと、タッチの動作をそれ以上追いかけるのをやめてしまうようなのだ。
しかるべき時にちゃんと trueを返すようにしたらうまくいきました。
これってつまり「false返したってことはこのタッチは要らないんだよね?じゃあそれ以降情報渡すのやめるから!」ってことなんでしょうね。わからんでもないが・・・。
I wrote a code like this to get a shrunk image, but when I try to use the bitmapB in the following part I get "bitmap already recycled" error.
Matrix matrix = new Matrix()
matrix.postScale(0.5, 0.5);
Bitmap bitmapA = BitmapFactory.decodeResource(getResources(),anId);
Bitmap bitmapB = Bitmap.createBitmap( bitmapA, 0, 0, bitmapA.getWidth(), bitmapB.getHeight(),matrix, true);
bitmapA.recycle();
I thought createBitmap() makes copy of the original bitmap but if the bitmap is immutable they(source and destination) share the same byte array on the memory.
I think it's pretty confusing to have "create" in the name of the method...
画像を縮小しようと思ってこんなコードを書いたのだけど、得られた bitmapB をこの後使おうとすると「recycle済みのビットマップを使用した」という旨のエラーが出ます。
Matrix matrix = new Matrix()
matrix.postScale(0.5, 0.5);
Bitmap bitmapA = BitmapFactory.decodeResource(getResources(),anId);
Bitmap bitmapB = Bitmap.createBitmap( bitmapA, 0, 0, bitmapA.getWidth(), bitmapB.getHeight(),matrix, true);
bitmapA.recycle();
createBitmap()ってビットマップをコピーして新たにビットマップを作るものかと思ってたんですが、元のビットマップが immutable の場合、同じバイト列を共有するようです。なので bitmapB を破棄してしまうと bitmapA も実体がなくなってしまう、と。
それは理解したとして、それってcreateBitmapっていう名前のイメージと違う・・・。混乱のもとですわ。
It may depend on decoding attribute setting but in my case jpg files with CMYK color mode caused an error in runtime.
I came across this error while I was testing the method for getting resource ID dynamically, and I had no doubt that it's the problem about getting resource ID, so it took a few hours until notice that...
jpgファイルのカラーモードがCMYKだと実行時にエラーで落ちるようです。デコードの際のオプション設定をちゃんとすれば読めるのかもしれないけど、ひとまずそういうこともありましたよ、ということで。
で、この現象に出くわしたのがリソースIDを動的に取ってくるやり方を実験してた時で、なのでID取得が原因と思い込んでそれ(CMYKモードが読めてない)に気づくのに数時間要してしまったというお話し・・。
getSharedPreferences(prefName,mode)の省略形である getPreferences(mode) では、プリファレンス名としてアクティビティ名が採用されるんですね。
どこかの記事でアプリケーション名と書かれていた気がした(うろ覚え)ので勘違いしてました;
アプリケーション内で共通して使う場合は明示的にプリファレンス名を指定しましょう。
As my app have lots of images, so I wanted to categorize them and put into some subfolders, but the IDs disappeared from R.java when I did it.
Unfortunately, the android environment seems to be designed to ignore the subfolders under "drawable" etc..
http://stackoverflow.com/questions/1077357/can-the-android-drawable-directory-contain-subdirectories
Oh, my...
アプリ内に画像がいろいろ増えてきたんでカテゴリ分けしてサブフォルダに・・・と思ったら、サブフォルダに映すと R.java からIDが消えてしまう。
どうやらサブフォルダは無視される仕様らしい・・・
http://stackoverflow.com/questions/1077357/can-the-android-drawable-directory-contain-subdirectories
なんちゅう設計や・・・