如何返回上一个片段活动

时间:2013-04-09 08:54:42

标签: android back android-fragmentactivity

三个片段活动:MainFragmentActivityReportsReportsType

报告正在呼叫ReportsType

ReportsType中有一个后退按钮,可以返回以下代码:

public void goBackReport(View v)
    {
       finish(); // why MainFragmentActivity.java is called after finish()?
    }

但它总是回归MainFragmentActivity.java。但它应该是Reports.java

更新

Reports.java

public void showReport(View v) {
        String tag = v.getTag().toString();
    Intent i5 = new Intent(this, ReportsType.class);
    i5.putExtra("name", tag);
    FragmentTransactiontransaction=getSupportFragmentManager().beginTransaction();
        transaction.addToBackStack(null).commit();
        startActivity(i5);

    }

ReportsType.java

public void goBackReport(View v)
    {
       getSupportFragmentManager().popBackStack(); //nothing happens
    }

2 个答案:

答案 0 :(得分:2)

finish()上没有调用Fragment的概念。相反,您应该在执行事务时保留一堆片段。例如:

ft.addToBackStack(null);   // ft is FragmentTransaction

因此,当您按后退键时,当前活动(包含多个片段)将加载上一个片段而不是自行完成。

答案 1 :(得分:0)

试试这个..

Intent i=new Intent(this,MainFragmentActivity.class)
startActivity(i);
finish();

Intent i=new Intent(this,Reports.class)
startActivity(i);
finish();

Intent i=new Intent(this,ReportsType.class)
startActivity(i);
finish();

在最后一次调用新的Activity write finish()时