package com.yaoyumeng.v2ex.ui; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.view.MenuItem; import com.yaoyumeng.v2ex.R; import com.yaoyumeng.v2ex.model.TopicModel; import com.yaoyumeng.v2ex.ui.fragment.TopicFragment; import com.yaoyumeng.v2ex.ui.swipeback.SwipeBackActivity; import java.util.List; public class TopicActivity extends SwipeBackActivity { TopicModel mTopic; int mTopicId; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_container); TopicFragment fragment = new TopicFragment(); Bundle bundle = new Bundle(); if (savedInstanceState == null) { /** * deal such scheme: <a href="http://www.v2ex.com/t/1">go</> * * AndroidMainfext.xml config: * <data android:scheme="http" android:host="www.v2ex.com" android:pathPattern="/t/.*" /> */ Intent intent = getIntent(); Uri data = intent.getData(); String scheme = data != null ? data.getScheme() : ""; // "http" String host = data != null ? data.getHost() : ""; // "www.v2ex.com" List<String> params = data != null ? data.getPathSegments() : null; if ((scheme.equals("http") || scheme.equals("https")) && (host.equals("www.v2ex.com") || host.equals("v2ex.com")) && params != null && params.size() == 2) { String topicId = params.get(1); mTopicId = Integer.parseInt(topicId); bundle.putInt("topic_id", mTopicId); } else { if (intent.hasExtra("model")) { mTopic = intent.getParcelableExtra("model"); mTopicId = mTopic.id; bundle.putParcelable("model", mTopic); } else { mTopicId = intent.getIntExtra("topic_id", 0); bundle.putInt("topic_id", mTopicId); } } } else { mTopicId = savedInstanceState.getInt("topic_id"); bundle.putInt("topic_id", mTopicId); } fragment.setArguments(bundle); getSupportFragmentManager().beginTransaction().replace(R.id.container, fragment).commitAllowingStateLoss(); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { /*case android.R.id.home: Intent upIntent = NavUtils.getParentActivityIntent(this); if (NavUtils.shouldUpRecreateTask(this, upIntent)) { TaskStackBuilder.create(this).addNextIntentWithParentStack(upIntent).startActivities(); } else { upIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); NavUtils.navigateUpTo(this, upIntent); } return true; */ default: return super.onOptionsItemSelected(item); } } @Override public void onSaveInstanceState(Bundle outState) { outState.putInt("topic_id", mTopicId); super.onSaveInstanceState(outState); } }