使用backstack时android.app.Fragment和android.support.v4.app.Fragment的不同行为

时间:2015-10-21 14:01:28

标签: java android android-fragments

我已经创建了Activity并使用FragmentManeger为其添加了一个片段。当我使用android.app.Fragment并按后退按钮时,我的应用程序关闭。当我使用android.support.v4.app.Fragment并按后退按钮时,片段将从活动中删除,但应用程序仍在运行。我无法理解为什么会这样。

以下是我使用的代码:

的活动:

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        getFragmentManager().beginTransaction()
            .replace(R.id.content_fragment, new Fragment1())
            .addToBackStack("first")
            .commit();
    }
}

片段:

import android.os.Bundle;
import android.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class Fragment1 extends Fragment {

    public Fragment1() {
        // Required empty public constructor
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
         // Inflate the layout for this fragment
         return inflater.inflate(R.layout.fragment_fragment1, container, false);
    }
}

当我只是将ActivityFragment中的导入替换为相同的类时,但在支持库中,结果却不同......

编辑: 我还将getFragemetManeger()替换为getSupportFragmentMeneger(),但它仍然有效。

2 个答案:

答案 0 :(得分:0)

如果您只想改变背部行为,可以尝试覆盖 onBackPressed有类似的东西:

if(backstackCount() > 0)
{
     super.onBackPressed
}

答案 1 :(得分:0)

问题出现了,因为我使用了android.support.v7.app.AppCompatActivity和android.app.Fragment。我应该将android.app.Fragment与android.app.Activity或AppCompatActivity一起用于支持片段。