package com.datdo.mobilib.imageinput; import android.content.Context; import android.content.Intent; import android.os.Bundle; import com.datdo.mobilib.base.MblBaseFragmentActivity; import com.datdo.mobilib.util.MblUtils; class MblDataInputActivity extends MblBaseFragmentActivity { private static final String EXTRA_CALLBACK = "callback"; private static final String EXTRA_DELEGATE = "delegate"; private CmDataInputActivityCallback mCallback; private CmDataInputActivityDelegate mDelegate; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); String callbackKey = getIntent().getExtras().getString(EXTRA_CALLBACK); mCallback = (CmDataInputActivityCallback) MblUtils.removeFromCommonBundle(callbackKey); String delegateKey = getIntent().getExtras().getString(EXTRA_DELEGATE); mDelegate = (CmDataInputActivityDelegate) MblUtils.removeFromCommonBundle(delegateKey); } protected void cancelInput() { if (mCallback != null) { MblUtils.executeOnMainThread(new Runnable() { @Override public void run() { mCallback.onCancel(); } }); } finish(); } protected void finishInput(final Object... outputData) { if (mDelegate != null && !mDelegate.checkBeforeFinish(this, outputData)) { return; } if (mCallback != null) { MblUtils.executeOnMainThread(new Runnable() { @Override public void run() { mCallback.onFinish(outputData); } }); } finish(); } public static interface CmDataInputActivityCallback { public void onFinish(Object... outputData); public void onCancel(); } public static interface CmDataInputActivityDelegate { public boolean checkBeforeFinish(MblDataInputActivity me, Object...outputData); } @SuppressWarnings("rawtypes") protected static Intent createIntent(Class clazz, CmDataInputActivityCallback callback, CmDataInputActivityDelegate delegate) { Context context = MblUtils.getCurrentContext(); Intent intent = new Intent(context, clazz); if (callback != null) { intent.putExtra(EXTRA_CALLBACK, MblUtils.putToCommonBundle(callback)); } if (delegate != null) { intent.putExtra(EXTRA_DELEGATE, MblUtils.putToCommonBundle(delegate)); } return intent; } @Override public void onBackPressed() { super.onBackPressed(); cancelInput(); } }