package com.yaoyumeng.v2ex.ui; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import com.yaoyumeng.v2ex.R; import com.yaoyumeng.v2ex.model.NodeModel; import com.yaoyumeng.v2ex.ui.fragment.TopicsFragment; import com.yaoyumeng.v2ex.ui.swipeback.SwipeBackActivity; import java.util.List; public class NodeActivity extends SwipeBackActivity { private static String TAG = "TopicActivity"; int mNodeId; String mNodeName; NodeModel mNode; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_container); TopicsFragment fragment = new TopicsFragment(); Bundle bundle = new Bundle(); if (savedInstanceState == null) { /** * deal such scheme: <a href="http://www.v2ex.com/go/v2ex">go</> * * AndroidMainfext.xml config: * <data android:scheme="http" android:host="www.v2ex.com" android:pathPattern="/go/.*" /> */ 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) { mNodeName = params.get(1); bundle.putString("node_name", mNodeName); } else { mNode = intent.getParcelableExtra("model"); if (mNode == null) finish(); setTitle(mNode.title); mNodeId = mNode.id; mNodeName = mNode.name; //bundle.putInt("node_id", mNodeId); bundle.putString("node_name", mNodeName); } } else { mNodeId = savedInstanceState.getInt("id"); bundle.putInt("node_id", mNodeId); } bundle.putBoolean("show_menu", true); fragment.setArguments(bundle); getSupportFragmentManager().beginTransaction().add(R.id.container, fragment).commitAllowingStateLoss(); } @Override public void onSaveInstanceState(Bundle outState) { outState.putInt("id", mNodeId); outState.putParcelable("model", mNode); super.onSaveInstanceState(outState); } }