【问题标题】:Fragment OnResume is not called on backpress后台不调用 Fragment OnResume
【发布时间】:2016-02-01 05:33:07
【问题描述】:

我正在从片段 A 转到片段 B。现在当我点击 backpress 时,片段 A 中的 onResume() 方法不会被调用。有谁知道这可能是什么原因?

这是我尝试过的,它的onResume 没有被调用:

 public class CurrencyFragment extends android.support.v4.app.Fragment {
public static String imagepath = null;
static ArrayList<EquityDetails> catListDao = new ArrayList<EquityDetails>();
static ArrayList<EquityDetails> catListDao1 = new ArrayList<EquityDetails>();
static int count = 0;
static boolean ab = false;
ListView list;
TextView empty_text;
View view;
Activity act;
AdvisorsAdapter adapter;
ImageView progressBar;
CustomToast toast;
AnimatorSet set;
private boolean isViewShown = false;

public static com.advisorymandi.CurrencyFragment newInstance() {
    return new com.advisorymandi.CurrencyFragment();
}

@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
    super.setUserVisibleHint(isVisibleToUser);
    if (isVisibleToUser) {
        isViewShown = true;
        if (adapter != null) {
            adapter.filter("");
        }
    } else {
        isViewShown = false;
    }
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    view = inflater.inflate(R.layout.equity_activity, container, false);
    act = this.getActivity();
    Constants.check_fragment_visible = 1;
    count++;
    return view;
}

public void onActivityCreated(Bundle savedInstanceState1) {
    super.onActivityCreated(savedInstanceState1);
    setHasOptionsMenu(true);
    list = (ListView) view.findViewById(R.id.list_equity);
    empty_text = (TextView) view.findViewById(R.id.empty);
    progressBar = (ImageView) view.findViewById(R.id.progressBar);
    set = (AnimatorSet) AnimatorInflater.loadAnimator(getActivity(), R.animator.fadein);
    set.setTarget(progressBar);
    progressBar.setVisibility(View.GONE);
    if (Utils.isNetworkAvailable(getActivity())) {
        if (catListDao.size() > 0) {
            adapter = new AdvisorsAdapter(act, R.layout.custom_equity, catListDao, 0);
            list.setAdapter(adapter);
        } else {
            if (!isViewShown) {
                new FetchAllData(getActivity(), 4).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
            }
        }
    } else {
        toast = new CustomToast(getActivity(), "There is no internet connection!");
    }
}

@Override
public void onResume() {
    super.onResume();
    if (adapter != null) adapter.notifyDataSetChanged();
    Constants.check_fragment_visible = 1;
    if (Constants.check_reload) {
        if (Utils.isNetworkAvailable(getActivity())) {
            if (!isViewShown) {
                new FetchAllData(getActivity(), 4).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
            } else {
            }
        } else {
            toast = new CustomToast(getActivity(), "There is no internet connection!");
        }
    }
}

@Override
public void onPause() {
    super.onPause();

}


}
}

【问题讨论】:

标签: android android-fragments


【解决方案1】:

片段生命周期总是与父活动的生命周期相关联,当您将片段添加到后台堆栈时弹出片段但父活动完好无损,它在前台,因此没有调用 onResume 它已经处于恢复状态,当您父活动的简历被称为您的片段 onResume 将被调用。尝试按主页按钮并返回应用程序并查看行为。

【讨论】:

    【解决方案2】:

    试试这些解决方案..它会对你有所帮助

     @Override
        public void onResume() {
    
            super.onResume();
    
            getView().setFocusableInTouchMode(true);
            getView().requestFocus();
            getView().setOnKeyListener(new View.OnKeyListener() {
                @Override
                public boolean onKey(View v, int keyCode, KeyEvent event) {
    
                    if (event.getAction() == KeyEvent.ACTION_UP && keyCode == KeyEvent.KEYCODE_BACK){
    
                        // DO YOUR BACK WARD FUNCTIONALITY CODE...
    
                        return true;
                    }
    
                    return false;
                }
            });
        }
    

    【讨论】:

    • @AnshulSharma ..它对你有用吗...如果有问题请告诉我
    • 我会尽力让你知道的。
    • @AnshulSharma ..对你有帮助吗?
    • @AnshulTyagi ..我在我的应用程序中使用了上面的代码..因为我看到这些用户出现了同样的问题,而不是我只是从应用程序中复制了上面的代码..我不知道关于你的链接..你想在这里展示什么??
    猜你喜欢
    • 2013-10-24
    • 1970-01-01
    • 2013-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多