相关疑难解决方法(0)

为什么要使用Fragment #setRetainInstance(boolean)?

我发现Fragment #setRetainInstance(true)令人困惑.这是从Android Developer API中提取的Javadoc :

public void setRetainInstance(boolean retain)

控制是否在活动重新创建(例如从配置更改)中保留片段实例.这只能用于不在后栈中的片段.如果设置,则在重新创建活动时,片段生命周期会略有不同:

  • onDestroy()不会被调用(但是onDetach()仍然会被调用,因为片段正在与其当前活动分离.
  • 因为片段没有被重新创建,所以不会调用onCreate(Bundle).
  • onAttach(活动)和onActivityCreated(捆绑)仍然被调用.

问题:作为开发人员,您如何使用它,为什么它会使事情变得更容易?

android android-lifecycle android-fragments

64
推荐指数
4
解决办法
5万
查看次数

保存/恢复片段状态android

我正在尝试使用Jack Wharton的ViewPager库(此处)创建一个应用程序,仅使用每个页面的图像(类似于Prixing(此处)主屏幕).一切正常,除了片段中的saveInstance.

在Jack Wharton的例子中,他将文本存储在名为mContent的String变量中,并在onCreate中恢复它,但在我的情况下,我该怎么办?保存/恢复位图?!任何客观的答案将不胜感激!

我对使用应用程序的Fragment很新,因为我看到的每一个例子,只展示了基础知识,而且对于更复杂的问题,它变得越来越困难.

PS.如果有用的知道,我正在使用CirclePageIndicator.

目前的片段代码:

    public final class SpecialOfferFragment extends Fragment {

    private int imageResourceId;

    public static SpecialOfferFragment newInstance(int i) {

        //probably I'll use a bitmap(downloaded) as parameter instead of using static images
        SpecialOfferFragment fragment = new SpecialOfferFragment();

        fragment.imageResourceId = i;

        return fragment;
    }


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // if ((savedInstanceState != null) { }

    }

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

        ImageView image = new ImageView(getActivity()); …
Run Code Online (Sandbox Code Playgroud)

android savestate fragment android-viewpager

13
推荐指数
1
解决办法
3万
查看次数

片段中未调用onSaveInstanceState

我知道人们已经提出了这个问题,但我遵循了所有的答案,我仍然遇到同样的问题.我有两个脚本一个是片段管理器(IngredientsActivity),另一个是片段(OtherList).代码如下

IngredientsActivity

import java.util.ArrayList;

import android.app.ActionBar;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;



public class IngredientsActivity extends FragmentActivity implements ActionBar.TabListener {

    private static final String STATE_SELECTED_NAVIGATION_ITEM = "selected_navigation_item";

    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.check_list);

        // Set up the action bar.
        final ActionBar actionBar = getActionBar();
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

        // For each of the sections in the app, add a tab to the action bar.
        actionBar.addTab(actionBar.newTab().setText("Alcahol").setTabListener(this));
        actionBar.addTab(actionBar.newTab().setText("Juice").setTabListener(this));
        actionBar.addTab(actionBar.newTab().setText("Other").setTabListener(this)); …
Run Code Online (Sandbox Code Playgroud)

java android list save android-fragments

5
推荐指数
2
解决办法
1万
查看次数