0

3 つのフラグメント アクティビティ: MainFragmentActivityReportsおよびReportsType

レポートが を呼び出して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
    }
4

2 に答える 2

2

finish()を呼び出すという概念はありませんFragment。代わりに、トランザクションを実行するときにフラグメントのスタックを保持する必要があります。例えば:

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

したがって、back-keyを押すと、現在のアクティビティ (複数のフラグメントを保持する) は、それ自体を終了するのではなく、前のフラグメントをロードします。

于 2013-04-09T09:05:08.033 に答える
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();

最後に new Activity write finish() を呼び出すと

于 2013-04-09T08:58:38.773 に答える