在Activity之间如何面向接口编程?

      一个Activity通常有多个入口,往往我们都需要根据传入数据的不同进行不同的呈现、操作。例如,一个具备草稿箱的编辑器。一方面可以通过“新建”形成一个空白编辑界面,也可以对“已存草稿”进行二次编辑(当然可以更多,如转发等等)。同一个“编辑Activity”因为不同的Intent需要有不同的初始化逻辑。
       这与传统的class的构造过程不同之处在于,class对外提供了对象创建的接口,进行了受限的初始化,并且这种限制表现为具有不同参数方法,而不是一种“口头”的约定。
EditActivity.java
public class EditActivity extends Activity {
	
	private String fromActivity;
	private String editText;
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.layout_edit);
        
        //合理性验证和初始化
        fromActivity = getIntent().getStringExtra(IntentUtil.INTENT_DATA_FROM);
        if( TextUtils.isEmpty( fromActivity ) )
        	return;
        String titleString = "新建";
        if( fromActivity.equals(DraftActivity.class.getName()))
        	titleString = "编辑";
        ((TextView)findViewById(R.id.title)).setText(titleString);
        
        editText = getIntent().getStringExtra(IntentUtil.INTENT_DATA_EDITTEXT);
        
        if( ! TextUtils.isEmpty(editText) )
        	((EditText)findViewById(R.id.edit)).setText(editText);
    }
}

EditClass.java
public class EditClass {
	private String fromActivity;
	private String editText;
	
	private EditClass( String fromActivity , String editText )
	{		
		this.fromActivity = fromActivity;
		this.editText = editText;
	}
	
	public EditClass initFromNew( String fromActivity , String editText )
	{
		if( null == fromActivity || "".equals(fromActivity) )
			return null;
		if( null == editText || "".equals(editText) )
			return null;
		EditClass instance =  new EditClass(fromActivity , editText);
		
		//进行一个空白界面的初始化
		//XXXXX
		//
		return instance;
	}
	
	public EditClass initFromDraft( String fromActivity )
	{
		if( null == fromActivity || "".equals(fromActivity) )
			return null;
		EditClass instance =  new EditClass(fromActivity , null);
		
		//进行一个二次编辑的初始化
		//XXXXX
		//
		return instance;
	}
}

       如果为Activity划分一下两种关联角色,类的创建者和类的使用者,创建者有什么办法限制Activity的创建?是和实例中一样,允许使用者将任意的字段填入Intent,只要满足创建者的”参数合理化判断流程“?还是有什么办法能够像传统类一样,限定一些特殊的创建接口供使用者去选择。

欢迎讨论!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值