Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.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
Android 如何确保我的片段';的内容视图在提交后可供访问?_Android_Fragment - Fatal编程技术网

Android 如何确保我的片段';的内容视图在提交后可供访问?

Android 如何确保我的片段';的内容视图在提交后可供访问?,android,fragment,Android,Fragment,因此,我有一个运行登录过程的AsyncTask。在运行之前,我打开一个事务并提交一个DialogFragment,向用户显示一个进度对话框,其中有一个ok按钮。 我想禁用它,只有在登录由于某种原因失败时才启用它,用户可以单击它并关闭它(实际上是从堆栈中弹出对话框片段)。 我只能访问该按钮,以便在解决方法注释后的下面代码部分中禁用它 我试图将该代码放在DialogFragment中重写的onAttach()和onStart()中,但它总是返回NullPointerException 这是我的密码:

因此,我有一个运行登录过程的
AsyncTask
。在运行之前,我打开一个事务并提交一个DialogFragment,向用户显示一个进度对话框,其中有一个ok按钮。 我想禁用它,只有在登录由于某种原因失败时才启用它,用户可以单击它并关闭它(实际上是从堆栈中弹出对话框片段)。
我只能访问该按钮,以便在解决方法注释后的下面代码部分中禁用它

我试图将该代码放在DialogFragment中重写的
onAttach()
onStart()
中,但它总是返回
NullPointerException

这是我的密码:

 class LoginTask extends AsyncTask<String, Integer, String> {
        private DialogFragment  df;

        @Override
        protected void onPreExecute() {
            df = new DialogFragment() {
                public Dialog onCreateDialog(Bundle savedInstanceState) {
                    ProgressDialog pd = new ProgressDialog(LoginActivity.this, ProgressDialog.THEME_HOLO_LIGHT);
                    pd.setIndeterminate(true);
                    pd.setCancelable(false);
                    pd.setMessage(getString(R.string.login_message));
                    pd.setTitle(getString(R.string.login_title));
                    pd.setButton(ProgressDialog.BUTTON_POSITIVE, getString(R.string.ok), new DialogInterface.OnClickListener() {

                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            getFragmentManager().popBackStack();
                        }
                    });
                    return pd;
                };
            };
            getFragmentManager().beginTransaction().add(df, "LOGIN_DLG_FRAG").commit();
        }

        @Override
        protected String doInBackground(String... params) {
                        // WORKAROUND
            runOnUiThread(new Runnable() {

                @Override
                public void run() {
                    ((ProgressDialog)df.getDialog()).getButton(ProgressDialog.BUTTON_POSITIVE).setEnabled(false);
                }
            });
                         ...
      }
     }
类登录任务扩展异步任务{
私人对话;
@凌驾
受保护的void onPreExecute(){
df=新的DialogFragment(){
创建对话框上的公共对话框(Bundle savedInstanceState){
ProgressDialog pd=新建ProgressDialog(LoginActivity.this,ProgressDialog.THEME\u HOLO\u LIGHT);
pd.SetUndeterminate(真);
pd.可设置可取消(假);
pd.setMessage(getString(R.string.login_message));
pd.setTitle(getString(R.string.login_title));
pd.setButton(ProgressDialog.BUTTON_正数,getString(R.string.ok),new DialogInterface.OnClickListener(){
@凌驾
public void onClick(DialogInterface dialog,int which){
getFragmentManager().popBackStack();
}
});
返回pd;
};
};
getFragmentManager().beginTransaction().add(df,“LOGIN_DLG_FRAG”).commit();
}
@凌驾
受保护的字符串doInBackground(字符串…参数){
//变通办法
runOnUiThread(新的Runnable(){
@凌驾
公开募捐{
((ProgressDialog)df.getDialog()).getButton(ProgressDialog.BUTTON_正数)。setEnabled(false);
}
});
...
}
}
我知道
FragmentTransaction.commit()
计划操作,因此我想知道如何以正确的方式访问片段的视图组件

提前谢谢