Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 保存片段对象_Java_Android_Fragment - Fatal编程技术网

Java 保存片段对象

Java 保存片段对象,java,android,fragment,Java,Android,Fragment,我有一个活动,一次显示一个片段,现在每个片段都从服务器加载数据并在列表中不断获取数据,用户可以通过选择ActonBar中显示的微调器中的一个项目来显示活动中的另一个片段 这是活动的代码 public class HomeActivity extends SherlockFragmentActivity .....{ private class ListInfo { private String tag; private Cl

我有一个活动,一次显示一个片段,现在每个片段都从服务器加载数据并在列表中不断获取数据,用户可以通过选择ActonBar中显示的微调器中的一个项目来显示活动中的另一个片段

这是活动的代码

public class HomeActivity  extends SherlockFragmentActivity .....{

        private class ListInfo {


                private String tag;
        private Class<?> clss;
        private Bundle bundle;
        private Fragment fragment;

    public ListInfo(String tag, Class<?> clss, Bundle bundle) {
        this.tag = tag;
        this.clss = clss;
        this.bundle = bundle;
    }

}

String[] naviStrings;
private HashMap<String, ListInfo> listMap = new HashMap<String, HomeActivity.ListInfo>();

private ListInfo mLastListInfo = null;

private int currentSelectedOptionInSpinner;
ChannelFragment fr;

@SuppressWarnings("unchecked")
@Override
protected void onCreate(Bundle arg0) {
    super.onCreate(arg0);
    Log.d("HomeActivity", "onCreate");
    Log.d("onCreate bundle", "" + arg0);
    setContentView(R.layout.test);
    naviStrings = getResources().getStringArray(
            R.array.action_bar_spinner_entries);

    initializeList(arg0);

    Context context = getSupportActionBar().getThemedContext();
    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
            context, R.array.action_bar_spinner_entries,
            R.layout.sherlock_spinner_item);

    adapter.setDropDownViewResource(R.layout.sherlock_spinner_dropdown_item);
    getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
    getSupportActionBar().setListNavigationCallbacks(adapter, this);
    getSupportActionBar().setSelectedNavigationItem(
            currentSelectedOptionInSpinner);

}

private void initializeList(Bundle args) {

    ListInfo listInfo = null;

    // add first Fragment

    listMap.put(naviStrings[5], (listInfo = new ListInfo(naviStrings[5],
            AboutUsActivity.class, args)));
    addFragmentToList(this, listInfo);

    listMap.put(naviStrings[3], (listInfo = new ListInfo(naviStrings[3],
            Fragment1.class, args)));
    addFragmentToList(this, listInfo);

    listMap.put(naviStrings[2], (listInfo = new ListInfo(naviStrings[2],
            Fragment2.class, args)));
    addFragmentToList(this, listInfo);

    listMap.put(naviStrings[1], (listInfo = new ListInfo(naviStrings[1],
            Fragment3.class, args)));
    addFragmentToList(this, listInfo);

    listMap.put(naviStrings[4], (listInfo = new ListInfo(naviStrings[4],
            Fragment4.class, args)));
    addFragmentToList(this, listInfo);

    if (args != null) {
        Toast.makeText(this, "args is not null", Toast.LENGTH_SHORT).show();
        // set the current selected index in the ActionBar spinner
        if (args.getInt(
                ApplicationMetaData.IntentData.LAST_SELECTED_ITEM_SPINNER,
                -1) > -1
                && args.getInt(
                        ApplicationMetaData.IntentData.LAST_SELECTED_ITEM_SPINNER,
                        -1) < naviStrings.length) {
            Toast.makeText(this, "selected  is not null",
                    Toast.LENGTH_SHORT).show();

            currentSelectedOptionInSpinner = args
                    .getInt(ApplicationMetaData.IntentData.LAST_SELECTED_ITEM_SPINNER);
        } else {
            currentSelectedOptionInSpinner = 2;
        }
    } else {
        currentSelectedOptionInSpinner = 2;
    }

    onNavigationItemSelected(currentSelectedOptionInSpinner, 0);
}

private static void addFragmentToList(SherlockFragmentActivity activity,
        ListInfo instanse) {
    // check to see if we already have a fragment for this tab , probably
    // from a previously save state.
    // if so deactivated it ,because our initial state is that a tab is not
    // shown.
    String tag = instanse.tag;

    instanse.fragment = activity.getSupportFragmentManager()
            .findFragmentByTag(tag);

    if (instanse.fragment != null && !instanse.fragment.isDetached()) {
        FragmentTransaction ft = activity.getSupportFragmentManager()
                .beginTransaction();
        ft.detach(instanse.fragment);
        ft.commit();
        activity.getSupportFragmentManager().executePendingTransactions();
    }

}



@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putInt(
            ApplicationMetaData.IntentData.LAST_SELECTED_ITEM_SPINNER,
            currentSelectedOptionInSpinner);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    return super.onCreateOptionsMenu(menu);
}

@Override
public boolean onNavigationItemSelected(int itemPosition, long itemId) {
    Log.d("onNavigationItemSelected", "" + itemPosition);
    if (itemPosition == 5) {
        Intent i = new Intent(this, AboutUsActivity.class);
        startActivity(i);
        return true;
    }
    Log.d("fragment data", listMap.get(naviStrings[itemPosition]) + "");
    ListInfo newtItem = listMap.get(naviStrings[itemPosition]);
    if (newtItem != mLastListInfo) {
        FragmentTransaction ft = this.getSupportFragmentManager()
                .beginTransaction();

        if (mLastListInfo != null) {
            if (mLastListInfo.fragment != null) {
                ft.detach(mLastListInfo.fragment);
            }
        }
        if (newtItem != null) {
            if (newtItem.fragment == null) {
                // create and add
                newtItem.fragment = Fragment.instantiate(this,
                        newtItem.clss.getName(), newtItem.bundle);

                ft.add(android.R.id.content, newtItem.fragment,
                        newtItem.tag);
            } else {
                ft.attach(newtItem.fragment);
            }
        }
        mLastListInfo = newtItem;
        ft.commit();
        this.getSupportFragmentManager().executePendingTransactions();
        return true;
    }

    return false;

}}
公共类HomeActivity扩展了SherlockFragmentActivity{
私有类ListInfo{
私有字符串标签;
私家级CLS;
私有包;
私有片段;
公共ListInfo(字符串标记、类clss、包){
this.tag=tag;
this.clss=clss;
this.bundle=bundle;
}
}
字符串[]导航字符串;
私有HashMap listMap=新HashMap();
私有ListInfo mLastListInfo=null;
private int current selectedoptioninspinner;
通道片段fr;
@抑制警告(“未选中”)
@凌驾
创建时受保护的void(包arg0){
super.onCreate(arg0);
Log.d(“HomeActivity”、“onCreate”);
Log.d(“onCreate bundle”,“arg0”);
setContentView(R.layout.test);
naviStrings=getResources().getStringArray(
R.array.action\u bar\u spinner\u条目);
初始化列表(arg0);
上下文上下文=getSupportActionBar().getThemedContext();
ArrayAdapter=ArrayAdapter.createFromResource(
上下文,R.array.action\u bar\u微调器\u条目,
R.布局。夏洛克旋转器(项目);
adapter.setDropDownViewResource(R.layout.sherlock\u微调器\u下拉菜单\u项);
getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION\u MODE\u列表);
getSupportActionBar().setListNavigationCallbacks(适配器,this);
getSupportActionBar().setSelectedNavigationItem(
当前选择的选项(内部);
}
私有void初始值列表(Bundle args){
ListInfo ListInfo=null;
//添加第一个片段
put(naviStrings[5],(listInfo=newlistinfo(naviStrings[5],),
AboutUsActivity.class,args));
addFragmentToList(此为listInfo);
put(naviStrings[3],(listInfo=newlistinfo(naviStrings[3],),
片段(1.class,args));
addFragmentToList(此为listInfo);
put(naviStrings[2],(listInfo=newlistinfo(naviStrings[2],),
片段(2.class,args));
addFragmentToList(此为listInfo);
put(naviStrings[1],(listInfo=newlistinfo(naviStrings[1],),
片段(3.class,args));
addFragmentToList(此为listInfo);
put(naviStrings[4],(listInfo=newlistinfo(naviStrings[4],),
片段(4.class,args));
addFragmentToList(此为listInfo);
如果(args!=null){
Toast.makeText(这个“args不为null”,Toast.LENGTH_SHORT.show();
//在ActionBar微调器中设置当前选定的索引
如果(args.getInt)(
ApplicationMetaData.IntentData.LAST_SELECTED_ITEM_微调器,
-1) > -1
&&args.getInt(
ApplicationMetaData.IntentData.LAST_SELECTED_ITEM_微调器,
-1) 
现在当我导航时