Android AsyncTask中的进度对话框在活动引用上生成错误。不是封闭类
我试图使用AsyncTask将一些数据发送到web数据库,但当我尝试初始化进度对话框时,在preExecute方法的这一行中出现错误。 dialog=新建ProgressDialog(MainActivity.this,R.style.CustomAlertDialogStyle) 有关MainActivity的错误。这表示“MainActivity不是封闭类” 这是我的全部代码Android AsyncTask中的进度对话框在活动引用上生成错误。不是封闭类,android,android-asynctask,Android,Android Asynctask,我试图使用AsyncTask将一些数据发送到web数据库,但当我尝试初始化进度对话框时,在preExecute方法的这一行中出现错误。 dialog=新建ProgressDialog(MainActivity.this,R.style.CustomAlertDialogStyle) 有关MainActivity的错误。这表示“MainActivity不是封闭类” 这是我的全部代码 package com.cplusplusapp.rashidfaheem.hybridsoftwaresoluti
package com.cplusplusapp.rashidfaheem.hybridsoftwaresolutions.hbss.rashidfaheem.webservice;
import android.app.ProgressDialog;
import android.content.Context;
import android.net.Uri;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.Toast;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.HttpURLConnection;
import javax.net.ssl.HttpsURLConnection;
public class MainActivity extends AppCompatActivity {
Spinner sp;
Button signup, login;
EditText edtname, edtemail, edtaddress, edtpassword, edtphone, edtcity;
String name,pass,add,catagory,phone,email,city;
ArrayAdapter<String> adapter;
String[] options = {"Student", "Teacher"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
signup = (Button) findViewById(R.id.signup);
login = (Button) findViewById(R.id.login);
edtname = (EditText) findViewById(R.id.edtname);
edtemail = (EditText) findViewById(R.id.edtemail);
edtaddress = (EditText) findViewById(R.id.edtaddress);
edtpassword = (EditText) findViewById(R.id.edtpassword);
edtphone = (EditText) findViewById(R.id.edtphone);
edtcity = (EditText) findViewById(R.id.edtcity);
sp = (Spinner) findViewById(R.id.sp);
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, options);
sp.setAdapter(adapter);
login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
}
});
signup.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String permission="false";
new adduser().execute(edtname.getText().toString(), edtemail.getText().toString(), edtpassword.getText().toString(),
edtcity.getText().toString(), edtphone.getText().toString(), edtaddress.getText().toString(), permission, sp.getSelectedItem().toString());
}
});
}
}
class adduser extends AsyncTask<String, String, String>{
Context mcontext;
ProgressDialog dialog;
HttpURLConnection conn;
URL url=null;
@Override
protected void onPreExecute() {
super.onPreExecute();
dialog = new ProgressDialog(MainActivity.this, R.style.CustomAlertDialogStyle);
dialog.setMessage("Registering User, Please Wait");
dialog.setCancelable(false);
dialog.show();
}
@Override
protected String doInBackground(String... strings) {
try{
// Enter URL address where your php file resides
url=new URL("http://127.0.0.1/rashid/signup.php");
}catch (MalformedURLException e){
e.printStackTrace();
}
try {
// Setup HttpURLConnection class to send and receive data from php and mysql
conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(10000);
conn.setConnectTimeout(15000);
conn.setRequestMethod("POST");
// setDoInput and setDoOutput method depict handling of both send and receive
conn.setDoInput(true);
conn.setDoOutput(true);
// Append parameters to URL
Uri.Builder builder = new Uri.Builder();
builder.appendQueryParameter("customer_name", strings[0]);
builder.appendQueryParameter("customer_email", strings[1]);
builder.appendQueryParameter("customer_pass", strings[2]);
builder.appendQueryParameter("customer_city", strings[3]);
builder.appendQueryParameter("customer_contact", strings[4]);
builder.appendQueryParameter("customer_address", strings[5]);
builder.appendQueryParameter("permission", strings[6]);
builder.appendQueryParameter("category", strings[7]);
String query = builder.build().getEncodedQuery();
// Open connection for sending data
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(conn.getOutputStream(), "UTF-8"));
writer.write(query);
writer.flush();
writer.close();
conn.connect();
} catch (IOException e){
e.printStackTrace();
} catch (Exception e){
e.printStackTrace();
}
try{
int code = conn.getResponseCode();
// Check if successful connection made
if (code== HttpsURLConnection.HTTP_OK){
// Read data sent from server
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
StringBuilder result = new StringBuilder();
String line;
while ((line=reader.readLine())!=null){
result.append(line);
}
// Pass data to onPostExecute method
return (result.toString());
} else {
return ("unsuccessfull");
}
}catch (IOException e){
e.printStackTrace();
return ("Exception");
} finally {
conn.disconnect();
}
}
@Override
protected void onPostExecute(String result) {
dialog.dismiss();
if (result.equalsIgnoreCase("true")){
/* Here launching another activity when login successful. If you persist login state
use sharedPreferences of Android. and logout button to clear sharedPreferences.
*/
Toast.makeText(mcontext, "Registered Successfully", Toast.LENGTH_LONG).show();
} else if (result.equalsIgnoreCase("false")){
// If username and password does not match display a error message
Toast.makeText(mcontext, "Register First", Toast.LENGTH_LONG).show();
} else if (result.equalsIgnoreCase("Exception")|| result.equalsIgnoreCase("Unsuccessful")){
Toast.makeText(mcontext, "OOPs! Something went wrong. Connection Problem.", Toast.LENGTH_LONG).show();
}
}
}
package com.cplusplusapp.rashidfaheem.hybridsoftwaresolutions.hbss.rashidfaheem.webservice;
导入android.app.ProgressDialog;
导入android.content.Context;
导入android.net.Uri;
导入android.os.AsyncTask;
导入android.support.v7.app.AppActivity;
导入android.os.Bundle;
导入android.view.view;
导入android.widget.ArrayAdapter;
导入android.widget.Button;
导入android.widget.EditText;
导入android.widget.Spinner;
导入android.widget.Toast;
导入java.io.BufferedReader;
导入java.io.BufferedWriter;
导入java.io.IOException;
导入java.io.InputStream;
导入java.io.InputStreamReader;
导入java.io.OutputStream;
导入java.io.OutputStreamWriter;
导入java.net.MalformedURLException;
导入java.net.URL;
导入java.net.HttpURLConnection;
导入javax.net.ssl.HttpsURLConnection;
公共类MainActivity扩展了AppCompatActivity{
纺纱机;
按钮注册、登录;
EditText-edtname、edtemail、edtaddress、edtpassword、edtphone、edtcity;
字符串名称、传递、添加、分类、电话、电子邮件、城市;
阵列适配器;
字符串[]选项={“学生”,“教师”};
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
注册=(按钮)findViewById(R.id.signup);
login=(按钮)findviewbyd(R.id.login);
edtname=(EditText)findViewById(R.id.edtname);
edtemail=(EditText)findViewById(R.id.edtemail);
edtaddress=(EditText)findViewById(R.id.edtaddress);
edtpassword=(EditText)findViewById(R.id.edtpassword);
edtphone=(EditText)findViewById(R.id.edtphone);
edtcity=(EditText)findViewById(R.id.edtcity);
sp=(微调器)findViewById(R.id.sp);
adapter=new ArrayAdapter(此,android.R.layout.simple\u微调器\u项,选项);
sp.setAdapter(适配器);
login.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
}
});
signup.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
String permission=“false”;
new adduser().execute(edtname.getText().toString(),edtemail.getText().toString(),edtpassword.getText().toString(),
edtcity.getText().toString(),edtphone.getText().toString(),edtaddress.getText().toString(),permission,sp.getSelectedItem().toString();
}
});
}
}
类adduser扩展异步任务{
语境;
进程对话;
httpurl连接连接;
URL=null;
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
dialog=新建ProgressDialog(MainActivity.this,R.style.CustomAlertDialogStyle);
setMessage(“正在注册的用户,请稍候”);
对话框。可设置可取消(false);
dialog.show();
}
@凌驾
受保护的字符串背景(字符串…字符串){
试一试{
//输入php文件所在的URL地址
url=新url(“http://127.0.0.1/rashid/signup.php");
}捕获(格式错误){
e、 printStackTrace();
}
试一试{
//设置HttpURLConnection类以从php和mysql发送和接收数据
conn=(HttpURLConnection)url.openConnection();
连接设置读取超时(10000);
连接设置连接超时(15000);
conn.setRequestMethod(“POST”);
//setDoInput和setDoOutput方法描述了发送和接收的处理
conn.setDoInput(真);
连接设置输出(真);
//将参数附加到URL
Uri.Builder=新的Uri.Builder();
builder.appendQueryParameter(“客户名称”,字符串[0]);
builder.appendQueryParameter(“客户电子邮件”,字符串[1]);
builder.appendQueryParameter(“客户通行证”,字符串[2]);
生成器。附录查询参数(“客户城市”,字符串[3]);
生成器。附录查询参数(“客户联系人”,字符串[4]);
builder.appendQueryParameter(“客户地址”,字符串[5]);
builder.appendQueryParameter(“权限”,字符串[6]);
builder.appendQueryParameter(“类别”,字符串[7]);
字符串查询=builder.build().getEncodedQuery();
//打开用于发送数据的连接
BufferedWriter writer=新的BufferedWriter(新的OutputStreamWriter(conn.getOutputStream(),“UTF-8”);
writer.write(查询);
writer.flush();
writer.close();
连接();
}捕获(IOE异常){
e、 printStackTrace();
}捕获(例外e){
e、 printStackTrace();
}
试一试{
int code=conn.getResponseCode();
//检查连接是否成功
if(code==HttpsURLConnection.HTTP\u确定){
//读取从服务器发送的数据
BufferedReader=新的BufferedReader(新的InputStreamReader(conn.getInputStream());
StringBuilder结果=新建StringBuilder();
弦线;
而((line=reader.readLine())!=null){
结果。追加(行);
}
//将数据传递给onPostExecute方法
返回(result.toString());
}否则{
返回(“未成功”);
}
}捕获(IOE异常){
e、 printStackTrace();
返回(“例外”);
}最后{
连接断开();
}
}
@凌驾
受保护的void onPostExecute(字符串结果){
dialog.dismise();
if(result.equalsIgnoreCase(“true”)){
/*登录成功后,在此启动另一个活动。如果您保持登录状态
使用sharedPre
public class adduser extends AsyncTask<Context, String, ArrayList<Card>>
{
Context ApplicationContext;
Activity mActivity;
public adduser (Activity activity)
{
super();
mActivity = activity;
}