三个片段活动:MainFragmentActivity
,Reports
和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
}
答案 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()时