2013年1月31日木曜日

日本Androidの会 横浜支部に参加してきました

先週末に参加してきました。


日本Androidの会 横浜支部 第16回定例会 : ATND
http://atnd.org/events/35126


横浜支部は2回目の参加になります。
以下、所感。


2013年1月1日火曜日

2013年の目標

あけましておめでとうございます。
今年もよろしくお願いいたします。 

さてさて2013年になったので今年の目標を高らかに宣言したいと思います。

2013年目標


Webサービスを作る

今年の大きな目標はこれですね。ネタはもう決まっています。何番煎じになるかわわかりませんが…。

新しい言語を覚える

昨年はRubyを覚えました。今年は関数型言語に触ってみたいなーと思っています。Scalaあたりはどうなんでしょうか。

ブログを更新する

正直これが難しい?できれば月に2件は更新していきたいなーと。


勉強会で2件発表する

どこかの勉強会で発表したいなーと思っています。LTやってみたいです。



というわけで今年はブログ更新がんばりますのでよろしくお願いいたします。

2012年11月22日木曜日

[Android]コードからmarginの設定をする

メモ。

LayoutParamsのsetMarginで設定する。


 
            LayoutParams params = new LayoutParams(0, LayoutParams.MATCH_PARENT, 1);
            params.setMargins(5, 5, 5, 5);

情報元
How to set margin of ImageView using code, not xml

2012年11月15日木曜日

[Android]2.3以前でPreferenceScreenにテーマが適用されない不具合の対処

ひょっとしたら今更感があるネタなのですが、ハマったのでメモ。

2.3以前のOSだとPreferenceScreenを入れ子にしたPreferenceを生成するとテーマが正しく適用されないバグがあるみたいです。

Issue 4611: Background from PreferenceActivity is not applied to sub-PreferenceScreen

つまり、下記のようなXMLをPrefereceActivityに読み込ませると子のPreferenceScreenにはテーマが正常に適用されません。

preference.xml


 



    
        
        
    



最初のPreferenceはちゃんと表示されますが、
メニュー2を表示させようとすると、こうなります。
対策として上記リンクのコメント20に書かれていた対策を実施しました。
具体的には子のPreferenceScreenはxmlを分けて、Intent呼び出しでもう1つPreferenceActivityを生成して表示するようにします。
なのでPreferenceActivityではIntentの中身を見て読み込むxmlを切り替えます。

preference.xml


 



    
         
        



preference2.xml


 



    
    



MainActiviy.jara


 
package jp.inara.sample.preferencebug;

import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.MenuItem;

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
    
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        Intent intent = new Intent(this, MyPreferenceActivity.class);
        intent.setData(Uri.parse("preferences://preference1"));
        startActivity(intent);
        return true;
    }
       
}

MypreferenceActivity.java


 

package jp.inara.sample.preferencebug;

import android.os.Bundle;
import android.preference.PreferenceActivity;

public class MyPreferenceActivity extends PreferenceActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (getIntent().getData().toString().equals("preferences://preference2")) {
            addPreferencesFromResource(R.xml.preference2);
        } else {
            addPreferencesFromResource(R.xml.preference);
        }
    }

}

こんな感じにするとちゃんと子のPreferenceScreenが表示されるようになります。
気をつけなくちゃいけないのは、PreferenceActivityを呼び出すところでIntentにDataをセットし忘れないようにすることですかね。

2012年10月31日水曜日

[Android]ViewPagerに追加したFragmentのインスタンスを取得する

調べたのでメモ。

と言ってもここに書いてある事をやっただけ。
Update data in ListFragment as part of ViewPager

ここの2番めのFragmentStatePagerAdapter#instantiateItemを使う方法でいけました。

最も投票されているViewPagerが自動的に設定する、Tagを使ってFragmentを取ってくる回答はFragmentPagerAdapterを使っている場合は使えるけど、FragmentStatePagerAdapterを使っている場合はダメみたいです。

まぁどのみちAPIが勝手に設定しているTagを利用するのはちょっと怖いですよね。いつ変わるか分からないし。

ちなみに任意のページのFragmentではなくて、現在表示しているページのFragmentを取得したいのであればこんなふうにすればいけました。


       ViewPager pager = (ViewPager) getActivity().findViewById(R.id.pager);
       FragmentStatePagerAdapter sAdapter = (FragmentStatePagerAdapter) pager.getAdapter();
       HistoryListFragment f2 =(HistoryListFragment) sAdapter.instantiateItem(pager, pager.getCurrentItem());
ViewPager#getCurrentItemで現在表示しているページのpositionを取得しただけですが。

2012年10月23日火曜日

[Android]DialogFragmentにListFragmentを表示することはできない

調べてみたのですが、現状だとできなそう。

結局DialogFragment内のonCreateDialogでAlertDialogを作成して、AlertDialogのsetViewでListViewを設定する事にしました。

せっかく作ったListFragmentが再利用できなくてがっかり・・・。
ローディング中の表示とかデータが無いときのメッセージとかを1から作るのめんどくさいんですよね。

もし何かいい方法があったら教えて下さいー。

2012年10月5日金曜日

[Android]育レコのバージョンアップをしました


ワンタッチで育児記録が行えるアプリ、育レコのバージョンアップをしました。

育レコ - Google Play の Android アプリ

今回のバージョンアップでは記録に対して簡単なメモを残せるようにしました。
おっぱいを飲んだけどいつもの半分だったとか、お出かけした場所を記録したりとかができます。

メモの付け方は記録をつけた後に数秒間表示されるメモボタンをクリックしてください。

不具合等何かありましたら教えて下さい。

ではではー。