package com.quinn.githubknife.ui.activity; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; import android.support.v7.widget.Toolbar; import android.view.MenuItem; import android.widget.LinearBreadcrumb; import com.quinn.githubknife.R; import com.quinn.githubknife.ui.BaseActivity; import com.quinn.githubknife.ui.fragments.TreeFragment; import com.quinn.githubknife.ui.fragments.TreeFragment.PathCallback; import com.quinn.githubknife.utils.L; import butterknife.Bind; import butterknife.ButterKnife; public class TreeActivity extends BaseActivity implements PathCallback, LinearBreadcrumb.SelectionCallback { private static final String TAG = TreeActivity.class.getSimpleName(); @Bind(R.id.toolbar) Toolbar toolbar; @Bind(R.id.breadCrumbs) LinearBreadcrumb breadCrumbs; private String user; private String repo; private String branch; private TreeFragment fragment; public static void launch(Context context, Bundle bundle) { Intent intent = new Intent(context, TreeActivity.class); intent.putExtras(bundle); context.startActivity(intent); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_filetree); ButterKnife.bind(this); Bundle bundle = getIntent().getExtras(); if (bundle != null) { user = (String) bundle.getString("user"); repo = (String) bundle.getString("repo"); branch = (String) bundle.getString("branch"); } else if (savedInstanceState != null) { user = (String) savedInstanceState.getString("user"); repo = (String) savedInstanceState.getString("repo"); branch = (String) savedInstanceState.getString("branch"); } breadCrumbs.initRootCrumb(); breadCrumbs.setCallback(this); toolbar.setTitle(repo); toolbar.setSubtitle(branch); setSupportActionBar(toolbar); getSupportActionBar().setHomeButtonEnabled(true); //设置返回键可用 getSupportActionBar().setDisplayHomeAsUpEnabled(true); FragmentManager fragmentManager = getSupportFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); fragment = TreeFragment.getInstance(user, repo, branch); fragmentTransaction.add(R.id.container, fragment); fragmentTransaction.commit(); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: onBackPressed(); return true; } return super.onOptionsItemSelected(item); } @Override public void onPathChoosen(String path, String sha) { breadCrumbs.addCrumb(new LinearBreadcrumb.Crumb(path, sha), true); } @Override public String getAbosolutePath(int position) { return breadCrumbs.getAbsolutePath(breadCrumbs.getCrumb(breadCrumbs.size() - 1),"/"); } @Override public void onCrumbSelection(LinearBreadcrumb.Crumb crumb, String absolutePath, int count, int index) { L.i(TAG, "crumb = " + crumb); L.i(TAG, "absolutePath = " + absolutePath); L.i(TAG, "count = " + count); L.i(TAG, "index = " + index); for (int i = index + 1; i < count; i++) { breadCrumbs.removeCrumbAt(breadCrumbs.size() - 1); } breadCrumbs.setActive(crumb); fragment.loadCertainTree(crumb.getmAttachMsg()); } }