我正在通过替换所有已弃用的方法来更新我的应用。现在,我遇到了DialogFragments的问题。
我有一个像这样的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),但我不知道在哪里可以做到这一点。当我尝试使用fragmento.findView时()[doInBackground()]中的()得到了一个nullPointerException。
我很困惑......这样做的正确方法是什么?
谢谢!
答案 0 :(得分:3)
我相信您正在寻找的电话是:
fragmento.getDialog()。findViewById(...)
答案 1 :(得分: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();