package com.socialize.ui.view; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.util.AttributeSet; import android.view.Gravity; import android.view.View; import android.widget.FrameLayout; import android.widget.TextView; import com.socialize.log.SocializeLogger; public abstract class EntityView extends AuthenticatedView { public EntityView(Context context) { super(context); } public EntityView(Context context, AttributeSet attrs) { super(context, attrs); } @Override public View getView() { try { Context context = getViewContext(); Bundle bundle = null; if(context instanceof Activity) { Activity a = (Activity) context; bundle = a.getIntent().getExtras(); } if(bundle != null) { String[] bundleKeys = getBundleKeys(); if(bundleKeys != null && bundleKeys.length > 0) { Object[] values = new Object[bundleKeys.length]; for (int i = 0; i < bundleKeys.length; i++) { values[i] = bundle.get(bundleKeys[i]); } return getView(bundle, values); } } return getView(bundle, (Object[]) null); } catch (Throwable e) { SocializeLogger.e("", e); return getErrorView(); } } protected View getErrorView() { FrameLayout view = new FrameLayout(getContext()); FrameLayout.LayoutParams loadingScreenLayoutParams = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.FILL_PARENT,FrameLayout.LayoutParams.FILL_PARENT); FrameLayout.LayoutParams progressLayoutParams = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT,FrameLayout.LayoutParams.WRAP_CONTENT); loadingScreenLayoutParams.gravity = Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL; progressLayoutParams.gravity = Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL; setLayoutParams(loadingScreenLayoutParams); TextView errorView = new TextView(getContext()); errorView.setText("Unable to load view"); view.addView(errorView); return view; } protected abstract View getView(Bundle bundle, Object...bundleKeys); protected abstract String[] getBundleKeys(); }