SQLの窓

2015年06月22日


Android Studio のテストのコード記述を少し簡潔にする static メソッドをまとめた Tools2 クラス

tools.jar

(Tools/Tools2/TestArrayAdapter)

何をテストするにもボタンですし、画面上のコントロールの操作ではインスタンスを取得する事になるので、ジェネリックメソッド のサンプルとしての useView メソッドが役に立つかもしれません
package jp.android.work;

import android.app.Activity;
import android.view.View;
import android.widget.Button;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

/**
 * Created by lightbox on 2015/06/19.
 */
public class Tools2 {

	// 汎用型コントロール参照
	public static <T> T useView(Activity context,int id) {
		T view = null;
		view = (T)context.findViewById(id);
		return view;
	}

	// ボタン用コントロール参照( イベント引数付き )
	public static Button useButton(Activity context,int id,View.OnClickListener listener) {
		Button button = (Button) context.findViewById(id);
		if ( listener != null ) {
			button.setOnClickListener(listener);
		}
		return button;
	}

	// ボタン用コントロール参照( イベントなし )
	public static Button useButton(Activity context,int id) {
		Button button = (Button) context.findViewById(id);
		return button;
	}

	// テキストファイル( プライベート書き込み )
	public static void saveText( Activity context,String name, String text ) throws Exception  {

		FileOutputStream outStream = context.openFileOutput(name, android.content.Context.MODE_PRIVATE);
		OutputStreamWriter writer = new OutputStreamWriter(outStream);
		writer.write(text);
		writer.flush();
		writer.close();

	}

	// テキストファイル( 読み込み )
	public static String loadText( Activity context,String name ) throws Exception {

		FileInputStream fis = context.openFileInput(name);
		int size = fis.available();
		InputStreamReader isr = new InputStreamReader( fis );
		BufferedReader br = new BufferedReader(isr);
		StringBuffer all_string = new StringBuffer( size );
		String str = null;
		while((str = br.readLine()) != null){
			// 初回以外は前に改行を挿入する
			if ( !all_string.toString().equals("") ) {
				all_string.append("\n");
			}
			all_string.append(str);
		}
		br.close();

		return all_string.toString();

	}
}


利用サンプル
package jp.android.work;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

public class MainActivity extends Activity
		implements View.OnClickListener {

	class LinkFormat {
		String link;
		String name;
	}

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

		// コントロールのインスタンスを変数で保持せずに直接使用
		Tools2.<Button>useView(MainActivity.this, R.id.button)
			.setText("クリックして下さい");
		Tools2.<TextView>useView(MainActivity.this, R.id.textView)
			.setText("こんにちは");

		// コントロールのインスタンスを変数で保持せずに
		// ボタン専用メソッドでイベント作成
		Tools2.useButton(MainActivity.this, R.id.button, new View.OnClickListener() {
			@Override
			public void onClick(View v) {

				Log.i("lightbox", "Tools2.useButton");
				Log.i("lightbox", Tools2.<TextView>useView(MainActivity.this, R.id.textView).getText().toString());
				Tools2.useButton(MainActivity.this, R.id.button).setText("今クリックされました");

				String json = null;
				try {
					json = Tools2.loadText(MainActivity.this,"OneUrl.json");
					Log.i("lightbox", json);
				} catch (Exception e) {
					e.printStackTrace();
					Tools.messageBox(MainActivity.this,"ファイルを読み込めませんでした",null);
				}

			}
		});

		// コントロールのインスタンスを変数で保持せずに
		// 汎用メソッドでイベント作成
		Tools2.<Button>useView(MainActivity.this, R.id.button2)
			.setOnClickListener(new View.OnClickListener() {
				@Override
				public void onClick(View v) {

					Log.i("lightbox", "Tools2.useView");
					Tools2.<Button>useView(MainActivity.this, R.id.button2).setText("今クリックされました");

					// 文字列作成
					String json = null;
					String result = null;
					json = "";
					json += "{";
					json += 	"\"link\":\"http://www.yahoo.co.jp/\",";
					json += 	"\"name\":\"Yahoo! JAPAN\"";
					json += "}";

					// JSON 文字列をオブジェクトに変換して、整形しなおした JSON 文字列を取得する
					Gson gsonPretty = new GsonBuilder().setPrettyPrinting().create();
					LinkFormat lf = gsonPretty.fromJson(json,LinkFormat.class);
					String jsonPrettyString = gsonPretty.toJson(lf);

					// ファイルに書き込み
					try {
						Tools2.saveText(MainActivity.this,"OneUrl.json",jsonPrettyString);
					} catch (Exception e) {
						e.printStackTrace();
						Tools.messageBox(MainActivity.this,"書き込みに失敗しました",null);
					}

				}
			});

		// Activity にイベントを引き渡す
//		Tools2.<Button>useView(MainActivity.this, R.id.button).setOnClickListener(MainActivity.this);
//		Tools2.<Button>useView(MainActivity.this, R.id.button2).setOnClickListener(MainActivity.this);
		Tools2.<Button>useView(MainActivity.this, R.id.button3).setOnClickListener(MainActivity.this);

	}

	@Override
	public void onClick(View v) {

		if ( v.getId()  == R.id.button ) {

			Log.i("lightbox", "ボタン1がクリックされました");

		}
		if ( v.getId()  == R.id.button2 ) {

			Log.i("lightbox", "ボタン2がクリックされました");

		}
		if ( v.getId()  == R.id.button3 ) {

			Log.i("lightbox", "ボタン3がクリックされました");

		}

	}

}

関連する記事


【Android Studio 2の最新記事】
posted by lightbox at 2015-06-22 18:22 | Android Studio 2 | このブログの読者になる | 更新情報をチェックする
container 終わり



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

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