2013-05-07 40 views
1

我通過替換所有不推薦使用的方法來更新我的應用程序。現在,我遇到了DialogFragments問題。更新DialogFragment視圖(並使用AsyncTask)

我有這樣的DialogActivity:

public class Actualizar extends FragmentActivity 
{ 
    /**BASIC ACTIVITY CODE HERE **/ 

    /**WHERE THAT I NEED HELP **/ 
    OnClickListener onClickListener = new OnClickListener() 
    { 
     @Override 
     public void onClick(View v) 
     { 
      AsyncTaskActualizarDatos task = new AsyncTaskActualizarDatos(); 
      task.execute(); 
     } 
    }; 
} 

當我點擊一個按鈕,我想執行時的AsyncTask。此任務應顯示一個帶有自定義佈局的DialogFragment,並通過FTP下載某個文件。

的的AsyncTask是這樣的:

public class AsyncTaskActualizarDatos extends AsyncTask<Void,Void,Void> 
{ 
    FragmentoComunicacion fragmento; 

    @Override 
    protected void onPreExecute() 
    { 
     fragmento = FragmentoComunicacion.actualizarDatos(); 
     fragmento.show(fm, "dialog"); 
     super.onPreExecute(); 
    } 

    @Override 
    protected Void doInBackground(Void... arg0) 
    { 
      /** DO SOMETHING HERE **/ 
    } 
} 

而片段是這樣的:

public class FragmentoComunicacion extends DialogFragment 
{ 
    public static FragmentoComunicacion actualizarDatos() 
    { 
     FragmentoComunicacion f = new FragmentoComunicacion(); 
     return f; 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
    { 
     View v = inflater.inflate(R.layout.fragment_dialog_actualizar_datos, container); 
     getDialog().setTitle("Title"); 
     return v; 
    } 
} 

現在......我想更新片段中的觀點(使用publishProgress) ,但我不知道我可以在哪裏做到這一點。當我嘗試在[doInBackground()]中使用fragmento.findView()時,我得到了一個nullPointerException。

我很困惑...這樣做的正確方法是什麼?

謝謝!

回答

3

我相信你正在尋找的呼叫:

fragmento.getDialog()。findViewById(...)

+0

是的,你是真的...我的問題lem是在doInBackground方法中調用一個View ... – Desenfoque 2013-05-08 14:21:30

+0

啊,是的,這也是一個問題。你知道如何在onPostExecute中做什麼? – 2013-05-08 14:42:40

+0

是的......經過8個小時的良好睡眠後,我可以看到我做錯的所有事情...... – Desenfoque 2013-05-08 14:58:24

0
FragmentoComunicacion fragmento; 

@Override 
protected void onPreExecute() 
{ 
    FragmentoComunicacion fragmento = FragmentoComunicacion.actualizarDatos(); 
    fragmento.show(fm, "dialog"); 
    super.onPreExecute(); 
} 

你隱藏你的本地場fragmento父字段fragmento,您需要更改這個:FragmentoComunicacion fragmento = FragmentoComunicacion.actualizarDatos(); 這樣:fragmento = FragmentoComunicacion.actualizarDatos();

+0

感謝您的回答......但這只是一個錯字...現在代碼是正確的..(好吧,不是真的正確......你知道) – Desenfoque 2013-05-07 22:09:25