その他Tips

[edit]

Tips

[edit]

変数名からリソースIDを取得

getIdentifierをつかう。以下は同義

 imageID = R.drawable.e1;
 imageID = getResources().getIdentifier("e1", "drawable", getPackageName());

使用例

 for(int i=0;i<MAX;i++){
   String name = "kagawa"+i;
   int strId = getResources().getIdentifier(name, "string", getPackageName());
   String str = res.getString(strId);
 }
[edit]

変数の初期化

アクティビティ開始時に値が定まっていなければならないメンバ変数の初期化は、宣言時ではなく、onCreate、もしくは必要の応じて、onStart、onResumeで実行する必要がある

finish() ではプロセスは終了しないため。
参考:http://d.hatena.ne.jp/adsaria/20110428/1303966837

[edit]

Activityの呼び出し

インテントを使う。

 Intent i = new Intent(this, xxxx.class);
 // Intent i = new Intent(getApplicationContext(),xxxx.class);
 // i.setAction(Intent.ACTION_VIEW);
 startActivity(i);

情報を返して欲しいときはstartActivityForResult()

[edit]

アプリの終了

Activityの終了

 finish();
  • homeボタンと同じ動作
 moveTaskToBack(true);
  • Activity履歴が残らないようにしてfinish()

AndroidManifest.xml で <activity android:noHistory=”true”>

  • 別activityに移るときに前のやつをfinish()

http://atu-aka.blogspot.jp/2012/02/back.html

    public void onClick(View v) {
        //●●classに画面遷移する。
        startActivity(new Intent(▼▼, ●●.class));
        //現在居るActivityを終了する。
        finish();
    }
[edit]

戻るボタンで終了確認ダイアログ

 public boolean onKeyDown(int keyCode, KeyEvent event) {
 	if(keyCode == KeyEvent.KEYCODE_BACK){
 		//ダイアログの表示
 		new AlertDialog.Builder(this)
 		.setTitle("えほんをとじますか?")
 		.setPositiveButton("はい", new DialogInterface.OnClickListener() {
 			public void onClick(DialogInterface dialog, int whichButton) {
 				finish();
 			}
 		})
 		.setNegativeButton("いいえ", new DialogInterface.OnClickListener() {
 			public void onClick(DialogInterface dialog, int whichButton) {
 				// 何もしない
 			}
 		})
 		.show();
 		return false;
 	}
 	else{
 		return super.onKeyDown(keyCode, event);
 	}
 }

onKeyDown より dispatchKeyEvent の方がいいという説あり

 @Override
 public boolean dispatchKeyEvent(KeyEvent event) {
     if (event.getAction()==KeyEvent.ACTION_DOWN) {
         switch (event.getKeyCode()) {
         case KeyEvent.KEYCODE_BACK:
             // ダイアログ表示
             return true;
         }
     }
     return super.dispatchKeyEvent(event);
 }
[edit]

SDカードに移動できるように

manifestにて

 android:installLocation="preferExternal"
 android:installLocation="auto"
 android:installLocation="internalOnly"
[edit]

ActionBar

もしActionBarを利用したくないなら
Android4.0以降でActionBarを利用しない場合、テーマを変更すると手軽です。
■AndroidManifest.xml

 <activity
     android:label="@string/app_name"
     android:name=".SpritActionBarActivity"
     android:theme="@android:style/Theme.Black">
[edit]

Toast

Toast.makeText( context, "hello world", Toast.LENGTH_SHORT ).show();

[edit]

画面を消す

 public void clearDrawList(){
  bmpCanvas.drawColor(Color.BLACK);
  invalidate();
 }
[edit]

回転抑止

 android:screenOrientation="portrait"
[edit]

デバッグ

 import android.util.Log;
 Log.d ("tag", "message");

フラグでデバッグプリント制御

 private static final boolean DEBUG = true;
 if (DEBUG) Log.d ("DEBUG", "hogehoge");