SQLの窓

2013年09月14日


Android をテストするのにほんの少し楽になるかもしれないクラス



例えばここでテストしたいのは、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の最新記事】
posted by lightbox at 2013-09-14 16:33 | Android | このブログの読者になる | 更新情報をチェックする
container 終わり



フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり