如何在Android中保留片段实例?

时间:2014-04-30 13:56:11

标签: android

我制作了一个片段,我正在展示progressDialog。当方向改变时,我的进度对话框不再显示,而我使用的是setRetainInstance(true)

代码是

public class FragmentTest  extends Fragment implements OnClickListener
 {

Button proceed;
ProgressDialog pDialog;


@Override
public void onCreate(Bundle savedInstanceState)
{
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setRetainInstance(true);
    if(pDialog!=null)
    {
    pDialog.show();
    }

}

class inner extends AsyncTask
{

    @Override
    protected void onPreExecute() 
    {
        // TODO Auto-generated method stub
        super.onPreExecute();
        pDialog = new ProgressDialog(getActivity());
        pDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        pDialog.setMessage("Processing...");
        pDialog.setCancelable(false);
        pDialog.setMax(900000000);
        pDialog.show();
    }

    @Override
    protected Object doInBackground(Object... arg0) 
    {
        int k=0;
        for(int i=0;i<10000000;i++)
        {
            pDialog.incrementProgressBy(i);
            for(int j=0;j<10000;j++)
            {
                k=k+j;

            }
        }
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    protected void onPostExecute(Object result)
    {
        // TODO Auto-generated method stub
        super.onPostExecute(result);
        System.out.println("enter here");
        pDialog.dismiss();
    }



}



@Override
public void onStop() 
{
    // TODO Auto-generated method stub
    super.onStop();
    if (pDialog!=null && pDialog.isShowing()){
        pDialog.dismiss();
    }

}

}

但我的进度对话框没有显示。任何人都可以告诉我如何解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

您需要在显示之前创建ProgressDialog的实例。

最佳方法是创建方法showProgress

private void showProgress(){
    pDialog = new ProgressDialog(getActivity());
    pDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
    pDialog.setMessage("Processing...");
    pDialog.setCancelable(false);
    pDialog.setMax(900000000);
    pDialog.show();
}

在需要显示进度对话框时调用它。

 public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setRetainInstance(true);
    showProgress();
}