如何让android操作栏返回按钮返回片段

大家好,我已经在我的应用程序的操作栏中实现了一个后退按钮,但我不知道如何从一个活动返回到片段或片段到片段。 所以,如果有人能告诉我如何从一个活动返回到一个片段甚至一个片段到另一个片段,这将是惊人的。 这是我现在的代码

public class Article extends Activity{ private WebView webview; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.articleview); // etc... getActionBar().setDisplayHomeAsUpEnabled(true); Bundle b = getIntent().getExtras(); String KEY_LINK = b.getString("b"); String url = getIntent().getStringExtra("key"); WebView myWebView = (WebView) findViewById(R.id.webView); WebSettings webSettings = myWebView.getSettings(); webSettings.setJavaScriptEnabled(true); myWebView.loadUrl(url); myWebView.loadUrl(KEY_LINK); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: NavUtils.navigateUpFromSameTask(this); return true; default: return super.onOptionsItemSelected(item); } } } 

在我的清单中,我有

         

但我希望它返回到它的主机片段而不是我设置的主要活动。 有什么想法吗?

我最近不得不这样做,并决定转换声明是最好的方法。 基本上,您可以跟踪您现在所处的片段,然后根据您设置的标准切换到另一个片段。 对我来说,它是从一个片段导航回另一个片段。

 @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { ... case android.R.id.home: switch(currentFragment){ case FRAGMENT1: FragmentTransaction transaction = fragmentManager.beginTransaction(); transaction .replace(R.id.fragment_container, fragment2); transaction.commit(); currentFragment = FRAGMENT_2; return true; default: FragmentTransaction transaction = fragmentManager.beginTransaction(); transaction .replace(R.id.fragment_container, fragment1); transaction.commit(); currentFragment = FRAGMENT_1; return true; } } 

我假设你的意思是你想结束你当前的活动并显示一个片段? 在这种情况下,可能有一个父FragmentActivity(用于托管片段),所以你只需结束当前的Activity并以典型的方式启动另一个Activity。 再来一次:

 @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { ... case android.R.id.home: Intent intent = new Intent(this, NewFragmentActivity.class); intent.putExtra(...); // so you can pass what activity you're coming from, if needed startActivity(intent); this.finish(); 

请记住,这只是一个按钮,你实际上是通过case android.R.id.home:分配onClick()动作case android.R.id.home: