package net.oschina.gitapp.ui; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; import android.os.Message; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; import android.view.Menu; import android.view.View; import android.widget.ProgressBar; import net.oschina.gitapp.AppException; import net.oschina.gitapp.R; import net.oschina.gitapp.bean.Issue; import net.oschina.gitapp.bean.Project; import net.oschina.gitapp.common.Contanst; import net.oschina.gitapp.ui.baseactivity.BaseActionBarActivity; import net.oschina.gitapp.ui.fragments.IssueDetailViewPagerFragment; /** * issue详情activity * @created 2014-08-25 * @author 火蚁(http://my.oschina.net/LittleDY) * */ public class IssueDetailActivity extends BaseActionBarActivity { private FragmentManager mFragmentManager; private ProgressBar mLoading; private Project mProject; private Issue mIssue; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_issue_detail); initView(); init(savedInstanceState); } private void init(Bundle savedInstanceState) { mFragmentManager = getSupportFragmentManager(); Intent intent = getIntent(); mProject = (Project) intent.getSerializableExtra(Contanst.PROJECT); mIssue = (Issue) intent.getSerializableExtra(Contanst.ISSUE); String projectId = intent.getStringExtra(Contanst.PROJECTID); String issueId = intent.getStringExtra(Contanst.ISSUEID); if (mIssue == null || mProject == null) { loadIssueAndProject(projectId, issueId); } else { initData(); } } private void initData() { String title = "Issue " + (mIssue.getIid() == 0 ? "" : "#" + mIssue.getIid()); mActionBar.setTitle(title); mActionBar.setSubtitle(mProject.getOwner().getName() + "/" + mProject.getName()); FragmentTransaction ft = mFragmentManager.beginTransaction(); ft.replace(R.id.issue_content, IssueDetailViewPagerFragment.newInstance(mProject, mIssue)).commit(); } private void initView() { mLoading = (ProgressBar) findViewById(R.id.loading); } @Override public boolean onCreateOptionsMenu(Menu menu) { return true; } private void loadIssueAndProject(final String projectId, final String issueId) { new AsyncTask<Void, Void, Message>() { @Override protected Message doInBackground(Void... params) { Message msg = new Message(); try { mProject = getGitApplication().getProject(projectId); mIssue = getGitApplication().getIssue(projectId, issueId); msg.what = 1; } catch (AppException e) { msg.what = -1; msg.obj = e; e.printStackTrace(); } return msg; } @Override protected void onPostExecute(Message msg) { super.onPostExecute(msg); mLoading.setVisibility(View.GONE); if (msg.what == 1) { initData(); } else { if (msg.obj instanceof AppException) { ((AppException)msg.obj).makeToast(getGitApplication()); } } } @Override protected void onPreExecute() { super.onPreExecute(); mLoading.setVisibility(View.VISIBLE); } }.execute(); } }