小编Ema*_*ele的帖子

片段addToBackStack()和popBackStackImmediate()不起作用

我目前正在构建一个Android应用程序(14 <= SDK <= 21),使用一个ActionBarActivity或多个Fragments,例如ListFragmentMapFragment,它们在一个FrameLayout视图中交换.

ActionBarActivity自动替换/提交片段A.然后,当用户点击一个按钮时,托管活动替换/提交一个新的不同片段B.我的目标是让用户在按下后退按钮时返回片段A .

现在有些代码了.

主要活动

public class MainActivity extends ActionBarActivity implements StopFragment.OnFragmentInteractionListener,
    StopItemFragment.OnFragmentInteractionListener {
...

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

        fragmentManager = getFragmentManager();
        fragmentManager.enableDebugLogging(true);
        ...
        if (fragmentManager.findFragmentById(R.id.content_frame) == null) {
            StopItemFragment list = StopItemFragment.newInstance(null); //A - extends ListFragment
            fragmentManager.beginTransaction()
                .replace(R.id.content_frame, list)
                .addToBackStack(null)
                .commit();
        }
        ...

        @Override
        public void onFragmentInteraction(String id) {
        selectItem(Integer.parseInt(id));
        }


       private void selectItem(int position) {
       StopFragment fragment = StopFragment.newInstance(null, null); …
Run Code Online (Sandbox Code Playgroud)

android android-fragments back-stack

26
推荐指数
3
解决办法
5万
查看次数

SwipeRefreshLayout隐藏在空的RecyclerView上

我有Fragment一个SwipeRefreshLayout,然后RecyclerView为孩子.提交片段时,它会开始与服务器通信以检索某些数据并填充将为RecyclerView提供服务的CustomAdapter.

用户可以通过向下滑动或按ActionBar上的按钮来刷新内容.在后一种情况下,我手动调用swipeRefreshLayout.setRefreshing(true).所以到现在为止没有麻烦.

在第一次加载RecyclerView(onStart())期间手动调用刷新状态时出现问题.进度指示器没有显示,我假设因为RecyclerView仍然是空的,因为它需要几秒钟来检索所有数据......

我留给你一些代码.

片段代码:

public class MyFragment extends Fragment implements SwipeRefreshLayout.OnRefreshListener {


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

        View mView = inflater.inflate(R.layout.fragment_stop, container, false);
        mRecyclerView = (RecyclerView) mView.findViewById(R.id.recyclerView1);
        mRecyclerView.addItemDecoration(new DividerItemDecoration(getActivity(),
             DividerItemDecoration.VERTICAL_LIST));
        mRecyclerView.setHasFixedSize(true);
        mRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
        mRecyclerView.setItemAnimator(new DefaultItemAnimator());

       //SwipeRefreshLayout retrieved and  configured
       swipeLayout = (SwipeRefreshLayout) mView.findViewById(R.id.swipe_container);
       swipeLayout.setOnRefreshListener(this);
       swipeLayout.setColorSchemeResources(
            R.color.primaryColor,
            R.color.cyan_500,
            R.color.light_green_500,
            R.color.amber_500);

        return mView;


     }

    ...
    @Override
        public void onStart() {
            super.onStart();
            executeSchedule(); //First execution and data …
Run Code Online (Sandbox Code Playgroud)

android android-appcompat swiperefreshlayout android-recyclerview

9
推荐指数
3
解决办法
5616
查看次数