package org.aisen.weibo.sina.ui.activity.profile; import org.aisen.weibo.sina.R; import org.aisen.weibo.sina.support.utils.AppContext; import org.aisen.weibo.sina.ui.activity.common.WeiboBaseActivity; import org.aisen.weibo.sina.ui.fragment.profile.UserProfileFragment; import org.sina.android.SinaSDK; import org.sina.android.bean.WeiBoUser; import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.provider.Browser; import android.view.View; import android.widget.TextView; import com.m.support.Inject.ViewInject; import com.m.support.task.TaskException; import com.m.support.task.WorkTask; import com.m.ui.utils.ViewUtils; /** * 用户搜索界面 * * @author wangdan * */ public class UserProfileActivity extends WeiboBaseActivity { public static void launch(Activity from, String screenName) { Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(String.format("org.aisen.weibo.sina.userinfo://@%s", screenName))); intent.putExtra(Browser.EXTRA_APPLICATION_ID, from.getPackageName()); from.startActivity(intent); } @ViewInject(id = R.id.layContent) View layoutContent; @ViewInject(id = R.id.layoutLoadFailed) View layoutLoadFailed; @ViewInject(id = R.id.txtLoadFailed) TextView txtLoadFailed; @ViewInject(id = R.id.layoutReload, click = "reload") View layoutReload; private boolean searchFailed = false; private String screenName; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.ui_profile_activity); searchFailed = savedInstanceState == null ? false : savedInstanceState.getBoolean("searchFailed"); screenName = savedInstanceState == null ? null : savedInstanceState.getString("screenName"); txtLoadFailed.setText(R.string.error_pic_load_faild); if (savedInstanceState == null) { getActionBar().setDisplayHomeAsUpEnabled(true); getActionBar().setTitle(R.string.title_user_profile); Uri data = getIntent().getData(); if (data != null) { String d = data.toString(); int index = d.lastIndexOf("/"); String userName = d.substring(index + 1); if (userName.indexOf("@") == 0) userName = userName.substring(1); screenName = userName; reload(null); } else { finish(); return; } } if (searchFailed) { reload(null); } getActionBar().setDisplayShowHomeEnabled(false); } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putString("screenName", screenName); outState.putBoolean("searchFailed", searchFailed); } void reload(View v) { new UserShowTask().execute(); } class UserShowTask extends WorkTask<Void, Void, WeiBoUser> { @Override protected void onPrepare() { super.onPrepare(); layoutContent.setVisibility(View.VISIBLE); layoutLoadFailed.setVisibility(View.GONE); ViewUtils.createNormalProgressDialog(UserProfileActivity.this, getString(R.string.msg_load_profile)).show(); } @Override public WeiBoUser workInBackground(Void... params) throws TaskException { return SinaSDK.getInstance(AppContext.getToken()).userShow(null, screenName); } @Override protected void onFailure(TaskException exception) { super.onFailure(exception); showMessage(exception.getMessage()); layoutContent.setVisibility(View.GONE); layoutLoadFailed.setVisibility(View.VISIBLE); searchFailed = true; } @Override protected void onFinished() { super.onFinished(); ViewUtils.dismissNormalProgressDialog(); } @Override protected void onSuccess(WeiBoUser result) { super.onSuccess(result); searchFailed = false; layoutContent.setVisibility(View.VISIBLE); layoutLoadFailed.setVisibility(View.GONE); getFragmentManager().beginTransaction() .add(R.id.layContent, UserProfileFragment.newInstance(result), "UserProfileFragment") .commit(); } } }