× [PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。 |
今回は勉強したAndroidの本を紹介したいと思います。
満足度 ★★★★★ AndEngineでつくるAndroid 2Dゲーム 正確にはAndEngineというフレームワークをつかってAndroid用2Dゲームを作るという本です。 最後までやってみた感想。 ・プログラム完全初心者には難しいが、少しでもかじった人なら数回つまづく程度で簡単に出来る。 私のような初心者でも、最後まで内容を理解しながらできました。 ・本自体の間違いは少なめ。 後半につれて間違いが出てきます。ですが割と分かりやすい間違い。注意は追加コード部分が通常は 色が変わっているのですが、変わっていなかったりすることがある。大抵編集途中らしき文字列がつ いていて気がつきやすい。 ・途中に出てくるコラムが面白い。 専門学校の授業で出てくる話しより、泥臭くて面白い。現実感を感じられます。*あくまでも学生視 点 サンプルプログラム数:3 サンプルプログラム用画像:あり サンプルソースコード完成品:あり *注意事項 時々編集の間違いがある。 他の本でAndroidからプログラムを勉強した初心者は戸惑う可能性あり。 自分はやっていて面白かったです。 PR |
Androidのプロジェクトをimportして使う際の注意点。
アプリを作成しているときにベースとなる部分を作っておいて、そこからアプリを作るということをしていてきがついたこと。 同じ雛形を使ったアプリを1つの端末に複数おくことが出来ない。 プロジェクトネームをリネームするだけじゃダメでした。 Javaファイルのパッケージネームを変更してもダメだめ。 どーしたもんかな?と思いましたがマニフェストファイルをみるとパッケージネームが変わっていなかったのでそこを変更したら解決しました。 JavaのパッケージネームとManifestFileのパッケージネームを変更する。 |
プリファレンス
「キー”と”値”でデータを保存する」 DDMSでチェックできる。/data/data/パッケージ名/shared_prefsに格納されている。 ファイルの形式は.xml プリファレンスの処理 プリファレンスオブジェクトの取得 SharedPreferences preference = getSharedPreference(ファイルネーム,処理モード); 第1引数 ファイルネーム…処理を行いたいファイル名を書く(ファイルがないときは作成するファイル名)←確認中 第2引数 処理モード(以下のいずれかの定数をいれる) MODE_PRIVATE 他のアプリケーションからアクセス不可 MODE_WORLD_READABLE 他のアプリケーションからの読み込みは可能 MODE_WORLD_WRITABLE 他のアプリケーションからの書き込みは可能 データを編集する、編集用オブジェクトの取得 SharedPeferences.Editor editor = peference.edit(); データ書き込み editor.putString(キー,値); データの指定削除 editor.remove(キー); プリファレンスファイルのデータを全て削除 editor.clear(); 編集後、実行した内容をプリファレンスファイルに反映させる editor.commit(); データの取得 String str = preference.getString(キー,"not found"); 第1引数は取得したいデータのキー 第2引数はデータが取得できなかった場合に使用する値("みつかりません"とか) サンプルプログラム writeButton------>書き込み処理用のボタンのコールバックメソッド。 displayButton------>表示用ボタンのコールバックメソッド。 removeButton------>選択削除ボタンのコールバックメソッド。 deleteButton------->全件削除ボタンのコールバックメソッド。 プリファレンス以外の処理について displayButton以外のボタンは押下されるとダイアログを表示。”はい”を選ぶとその後の処理に進む。 deleteButtonのみダイアログで”はい”を選んだ後最終確認としてもう一度ダイアログを表示させている。 public class MainActivity extends Activity { private EditText imputId; private EditText imputName; private TextView displayView; private String Id; private String Name; private String data; private SharedPreferences preference; private SharedPreferences.Editor editor; private AlertDialog.Builder innerAb; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); displayView = (TextView)findViewById(R.id.displayview); imputId = (EditText)findViewById(R.id.imputId); imputName = (EditText)findViewById(R.id.imputName); preference = getSharedPreferences("MEMBER_FILE", MODE_PRIVATE); } public void writeButton(View v){ AlertDialog.Builder ab = new AlertDialog.Builder(this); ab.setTitle("登録処理"); ab.setMessage("プリファレンスに登録します"); ab.setPositiveButton("はい", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub Id = imputId.getText().toString(); Name = imputName.getText().toString(); editor = preference.edit(); editor.putString(Id, Name); editor.commit(); Toast.makeText(getApplicationContext(), "登録しました", Toast.LENGTH_LONG).show(); } }); ab.setNegativeButton("いいえ", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub } }); ab.show(); } public void displayButton(View v){ data = preference.getString(imputId.getText().toString(), "登録されていません"); displayView.setText(data); } public void removeButton(View v) { Id = imputId.getText().toString(); AlertDialog.Builder ab = new AlertDialog.Builder(MainActivity.this); ab.setTitle("指定削除"); ab.setMessage("ID"+Id+"のデータを消去しますか?"); ab.setPositiveButton("はい",new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { editor = preference.edit(); editor.remove(Id); editor.commit(); } }); ab.setNegativeButton("いいえ", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }); ab.show(); } public void deleteButton(View v){ AlertDialog.Builder ab = new AlertDialog.Builder(MainActivity.this); ab.setTitle("全件消去"); ab.setMessage("登録データを全件消去しますか?"); ab.setPositiveButton("はい", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { innerAb = new AlertDialog.Builder(MainActivity.this); innerAb.setTitle("最終確認!"); innerAb.setMessage("本当に登録データを全件消去しますか?"); innerAb.setPositiveButton("はい", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { editor = preference.edit(); editor.clear(); editor.commit(); } }); innerAb.setNegativeButton("いいえ", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }); innerAb.show(); } }); ab.setNegativeButton("いいえ",new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }); ab.show(); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.activity_main, menu); return true; } } |
EditTextに入力した文字列をSubActivityのTextViewで表示する。
とりあえずプロジェクトを作成したらManifestFileにActivityを追加してからプログラムを作る。 忘れてることを忘れる(笑) public class MainActivity extends Activity { private EditText ed; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ed = (EditText)findViewById(R.id.editText); } public void intentButtonClickListener(View view){ final String edString = ed.getText().toString(); AlertDialog.Builder ab = new AlertDialog.Builder(this); ab.setTitle("別アクティビティの起動"); ab.setMessage(edString+"を別のアクティビティで表示します"); ab.setPositiveButton("はい", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { // Intent生成 new Intent(自アクティビティ,送り先Activity名.class); Intent intent = new Intent(MainActivity.this,SubActivity.class); // 送りたい情報の設定・・・① intent.putExtra("MESSAGE",edString); startActivity(intent); } }); ab.setNegativeButton("いいえ", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub } }); ab.show(); } } SubActivity public class SubActivity extends Activity { private String text; private TextView textview; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_sub); textview = (TextView)findViewById(R.id.displayview); Intent intent = getIntent(); text = intent.getStringExtra("MESSAGE"); textview.setText(text); } public void backButton(View v){ finish(); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_sub, menu); return true; } } xmlファイルは割愛 id名は MainのEditTextの名前はeditText SubのTextViewの名前はdisplayview としています。 ①putExtra(第1引数,第2匹数); 第1引数はキー 第2引数はデータ SharedPreferencesのような感じ ArrayListを送りたい場合はputExtraではなく putIntegerArrayListExtra put◎◎ArrayListExtraとなる。 |
忍者ブログ [PR] |