Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.lang.reflect.Field;
- import java.lang.reflect.Modifier;
- import android.app.Activity;
- import android.content.Context;
- import android.util.Log;
- import android.view.View;
- import android.widget.Button;
- import android.widget.EditText;
- import android.widget.TextView;
- /**
- * Activityのウィジットを便利に使うユーティリティ
- * @author fslasht
- *
- */
- public class WidgetBinderUty {
- static private String TAG ="WidgetBinder";
- /**
- * Activityのメンバー変数のうちウィジットクラスに対して、レイアウト上の同名のIDのウィジットを自動的にセットする
- * @param activity 対象Activity
- */
- static public void bindWidgetToMemberVar(Activity activity) {
- View decor = activity.getWindow().getDecorView();
- bindWidgetToMemberVar(activity.getApplicationContext(),activity,decor);
- }
- static public void bindWidgetToMemberVar(Context context,Object obj , View viewTop) {
- for (Field field : obj.getClass().getDeclaredFields()) {
- if ( !Modifier.isStatic(field.getModifiers() )) {
- String name = field.getName();
- if ( name.endsWith("_")) name = name.substring(0, name.length()-1); // 末尾に「_」がある場合除外
- field.setAccessible(true); // privateでもアクセス出来るようにする
- try {
- if (field.getType() == TextView.class) {
- TextView v = (TextView)(getView(context,viewTop,name));
- field.set(obj,v );
- } else if (field.getType() == Button.class) {
- Button v = (Button)(getView(context,viewTop,name));
- field.set(obj,v );
- } else if (field.getType() == EditText.class) {
- EditText v = (EditText)(getView(context,viewTop,name));
- field.set(obj,v );
- }
- // 利用するウィジットの種類の分追加する
- } catch (IllegalArgumentException e) {
- e.printStackTrace();
- } catch (IllegalAccessException e) {
- e.printStackTrace();
- }catch ( ClassCastException e) {
- e.printStackTrace();
- }
- }
- }
- }
- // uty
- static private View getView(Context context,View viewTop , String idName) {
- int id = getResourceIDfromString(context, idName);
- return (viewTop.findViewById(id));
- }
- // ID取得
- static public int getResourceIDfromString(Context context , String name) {
- return context.getResources().getIdentifier(name, "id", context.getPackageName());
- }
- }
- /* 使用例
- public class MainActivity extends Activity {
- // widgets
- Button buttonCreateBitmap_;
- EditText edittextWidth_;
- EditText edittextHeight_;
- TextView textviewResult_;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- // bind
- WidgetBinderUty.bindWidgetToMemberVar(this); // ★ココ!
- // event
- edittextWidth_.setText("100AA");
- edittextHeight_.setText("100");
- buttonCreateBitmap_.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- textviewResult_.setText(edittextWidth_.getText());
- }
- });
- }
- }
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement