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

时间:2014-04-27 23:30:56

标签: java android android-fragments android-actionbar manifest

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

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);

}
        }

        }

在我的清单中我有

 <activity
        android:name=".Article"

        android:label="@string/app_name"
        android:screenOrientation="portrait">
        <intent-filter>

            <action android:name="com.NTCI.graffiti.Article" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.NTCI.graffiti.MainActivity" />
    </activity>

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

1 个答案:

答案 0 :(得分:3)

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

@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()操作