阻止每次在DialogFragment中加载数据

时间:2012-03-22 10:23:35

标签: android android-fragments android-dialog android-dialogfragment

我在Android Compatibility Support Package

的帮助下使用DialogFragment创建了一个自定义AlergDialog

在我的自定义对话框中,我在对话框中有一个列表视图,并且正在从Android中的Sqlite数据库加载列表视图的内容。此对话框从列表视图中弹出,该列表视图仅位于片段内。

现在,每当我点击listview(在片段中)时,会出现一个对话框,成功将数据显示在listview中,但每次我按下listitem(在片段内)时,数据都会从对话框中的数据库列表视图bcoz onCreate is being called every time所以我想要的是data should be loaded at once for all listitem of listview which is inside of fragment.

代码

每当点击片段中的listitem时,我都会调用自定义DialogFragment

DalogFragment newFragment = TemplateToContact.newInstance("hi");
newFragment.show(getFragmentManager(), "dialog");

DialogFragment的OnCreate

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        contactDB = new ContactDB(getActivity().getApplicationContext());
    contactDataList = contactDB.getAllContacts();
        templateContactAdapter = new TemplateContactAdapter();

    }
在OnCreateDialog中的

我创建一个自定义警告对话框,设置调整器并将其返回

@Override
 public Dialog onCreateDialog(Bundle savedInstanceState) {

   LayoutInflater factory = LayoutInflater.from(getActivity());         
   View v = factory.inflate(R.layout.cdialog, null);
   builder = new AlertDialog.Builder(getActivity());

   builder.setView(v);

   templateContactDlg = builder.create();                

   templateContactList = (ListView)v.findViewById(R.id.contactDlgList);            

   templateContactList.setAdapter(templateContactAdapter);

   return templateContactDlg;

  }

1 个答案:

答案 0 :(得分:1)

你说你使用DialogFragment,但你的代码是AlertDialog。 Here是如何使用DialogFragment的示例。 Google Android团队建议您使用DialogFragment,而不是AlertDialog。

加入:


    @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);

        if (savedInstanceState != null) {
            aboutFile = savedInstanceState.getString(FILE_NAME);
        }
    }



    @Override
    public void onSaveInstanceState(Bundle outState) {
        outState.putString(FILE_NAME, aboutFile);
    }

要注入帮助程序类,请阅读this,例如。