例えばここでテストしたいのは、Twitter の投稿なのですが、そのたびに一からイベントやらキャストやらファイル読み書きとか面倒なので作りました。2013-09-12 : 初回投稿 2013-09-14 : ダイアログ処理とラベル(TextView)処理を追加しましたメソッドの引数でクラスのオブジェクトが必要なところで new と 入力して CTRL+SPACE で Eclipse が匿名のインナー型の候補を出してくれる事を期待しています。util.buttonClick(R.id.button1, new OnClickListener() { @Override public void onClick(View v) { // TODO 自動生成されたメソッド・スタブ } });util. と 最後のセミコロンを除いて、殆ど Eclipse が候補を出してくれます。 Util.java
package com.example.textfile; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.Calendar; import android.app.Activity; import android.app.AlertDialog; import android.app.DatePickerDialog; import android.app.DatePickerDialog.OnDateSetListener; import android.content.DialogInterface; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; public class Util { public Activity cur = null; public final Calendar c = Calendar.getInstance(); public final int year = c.get(Calendar.YEAR); public final int month = c.get(Calendar.MONTH); public final int day = c.get(Calendar.DAY_OF_MONTH); public Util(Activity ma) { cur = ma; } // ****************************************** // その他 // ****************************************** public void toast(String message) { Toast.makeText(cur, message, Toast.LENGTH_LONG).show(); } // ****************************************** // 入力 // ****************************************** public String getFieldStr(int id) { return ((EditText)cur.findViewById(id)).getText().toString(); } public void setFieldStr(int id,String text) { ((EditText)cur.findViewById(id)).setText(text); } // ****************************************** // ラベル // ****************************************** public String getViewStr(int id) { return ((TextView)cur.findViewById(id)).getText().toString(); } public void setViewStr(int id,String text) { ((TextView)cur.findViewById(id)).setText(text); } // ****************************************** // ボタン // ****************************************** public Button getButton(int id) { return (Button) cur.findViewById(id); } public void buttonClick(int id,OnClickListener I) { ((Button) cur.findViewById(id)).setOnClickListener(I); } // ****************************************** // テキストファイル // ****************************************** public void saveText( String name, String text) throws Exception { FileOutputStream outStream = cur.openFileOutput(name, android.content.Context.MODE_PRIVATE); OutputStreamWriter writer = new OutputStreamWriter(outStream); writer.write(text); writer.flush(); writer.close(); } public String getText( String name ) throws Exception { FileInputStream fis = cur.openFileInput(name); int size = fis.available(); InputStreamReader isr = new InputStreamReader( fis ); BufferedReader br = new BufferedReader(isr); StringBuffer all_string = new StringBuffer( size ); String str; while((str = br.readLine()) != null){ all_string.append(str); } br.close(); return all_string.toString(); } // ****************************************** // ダイアログ // ****************************************** public DatePickerDialog dateDialog(OnDateSetListener listener) { return new DatePickerDialog(cur,listener,year,month,day); } public AlertDialog messageBox(String title,String message,DialogInterface.OnClickListener onClickListener1,DialogInterface.OnClickListener onClickListener2) { AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(cur); alertDialogBuilder.setTitle(title); alertDialogBuilder.setMessage(message); alertDialogBuilder.setPositiveButton("YES",onClickListener1); alertDialogBuilder.setNegativeButton("NO", onClickListener2); alertDialogBuilder.setCancelable(true); return alertDialogBuilder.create(); } }
MainActivity.java
package com.example.textfile; import com.example.textfile.Android_Twitter.Tweeted; import android.os.Bundle; import android.app.Activity; import android.app.DatePickerDialog; import android.app.DatePickerDialog.OnDateSetListener; import android.content.DialogInterface; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.DatePicker; public class MainActivity extends Activity { private Util util = new Util( this ); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // ボタンイベント util.buttonClick(R.id.button1,new OnClickListener() { @Override public void onClick(View v) { // Twitter 投稿 new Android_Twitter( "", "", "", "").Tweet( util.getFieldStr(R.id.editText1), new Tweeted() { // 投稿結果 @Override public void onTweetResult(String result) { try { // 内部ストレージへのファイル保存 util.saveText("json.txt", result); } catch( Exception ex ) { ex.printStackTrace(); } } }); // メッセージ util.toast("投稿しました!!"); } }); // 初期処理として、内部ストレージから文字列を取得 try{ util.setFieldStr(R.id.editText1, util.getText("file1.txt")); } catch(Exception ex){ ex.printStackTrace(); } // ボタンイベント util.buttonClick(R.id.button2, new OnClickListener() { @Override public void onClick(View v) { // 日付ダイアログ util.dateDialog(new OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { // 結果を表示 util.setViewStr(R.id.textView1, year + "/" + (monthOfYear+1)+"/"+dayOfMonth); } }).show(); // 表示 } }); // ホダンイベント util.buttonClick(R.id.button3, new OnClickListener() { @Override public void onClick(View v) { // 選択肢応答ダイアログ util.messageBox("メッセージボックス", "Yes または No による選択処理", // YES の処理 new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { System.out.println("YES"); } }, // NO の処理 new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { System.out.println("NO"); } } ).show(); // 表示 } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; } }
|
【Androidの最新記事】
- デバイスを探す / Find My Device - Google / Android Find
- JavaScript から Android へアクセス
- Monaca と 本当の 『Onsen UI最小限のテンプレート』
- Android 5.1 リリース済み。SDK( android-sdk_r24.0.2-windows.zip ) でまずエミュレータ作って、あとから Eclipse と Android Studio..
- クラウドでアプリを作成してスマホで動作させる『Monaca』を Android エミュレータの 5.1 で動作確認しました
- Android で Post と Get
- 別の ADT(Android) で作成されたワークスペースを最新の ADT で開く場合の操作方法
- Android : ListView Twitter 検索テンプレート
- トラブル : AndroidManifest.xml に XML 宣言があるとエラーになる???
- Twitter API の自分のアプリのトークンを使って投稿するだけの class Android_Twitter
- Android 単純リストビューを google-gson で最速構築
- Android : Google Spreadsheets API version 3.0でGoogleスプレッドシートを参照
- Android 4.2.2(ADT) : class MyDatePicker extends DatePickerDialog
- Android : 日付ダイアログをインナーで使う( 完了ボタンをクリックした場合としない場合の対応 )
- Android(4.2.2) ADT から Post や Get をできるかぎり簡単にするサンプル
- Android ADT : 単純画面遷移
- HashMap の Key と Value をそれぞれソートして、最終的には 配列に変換して テンプレートを使って for ループを簡単に記述する
- ADT Eclipse : sysout テンプレートの変更
- Android(ADT Eclipse) 用 ボタンイベントテンプレート
- Android から Post 投稿 / HttpPostAndXml extends AsyncTask<Map, Void, Document>