gpt4 book ai didi

java - 错误: is not an enclosing class

转载 作者:行者123 更新时间:2023-11-29 20:21:41 27 4
gpt4 key购买 nike

我的项目有问题。我有 2 个类:MainActivity 和 Insert。我在“插入”类中出现错误。 对话框 = new ProgressDialog(MainActivity.this); 我的错误是“不是封闭类”。 请帮助我

代码插入:

public class Insert extends AsyncTask<String, Void, Boolean> {

ProgressDialog dialog;

@Override
protected void onPreExecute() {
super.onPreExecute();
dialog = new ProgressDialog(MainActivity.this); //error is here
dialog.setMessage("Inserting details, please wait");
dialog.setTitle("Connecting... ");
dialog.show();
dialog.setCancelable(false);
}

@Override
protected Boolean doInBackground(String... urls) {


try {

List<NameValuePair> insert = new ArrayList<NameValuePair>();
insert.add(new BasicNameValuePair("name", nameStr));
insert.add(new BasicNameValuePair("country", countryStr));
insert.add(new BasicNameValuePair("email", emailStr));
insert.add(new BasicNameValuePair("hobbies", hobbiesStr));


HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(
"http://bookcompr.netne.net/input.php");
httpPost.setEntity(new UrlEncodedFormEntity(insert));

HttpResponse response = httpClient.execute(httpPost);

HttpEntity entity = response.getEntity();

return true;


} catch (IOException e) {
e.printStackTrace();

}


return false;
}

protected void onPostExecute(Boolean result) {
dialog.cancel();

AlertDialog.Builder ac = new AlertDialog.Builder(MainActivity.this);//error is here

ac.setTitle("Result");
ac.setMessage("Details Successfully Inserted");
ac.setCancelable(true);

ac.setPositiveButton(
"Ok",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();

}
});

AlertDialog alert = ac.create();
alert.show();
}

}

代码主要 Activity

public class MainActivity extends AppCompatActivity {

EditText name, country, email, hobbies;

Button insert;

String nameStr, countryStr, emailStr, hobbiesStr;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

name = (EditText) findViewById(R.id.name);
country = (EditText) findViewById(R.id.country);
email = (EditText) findViewById(R.id.email);
hobbies = (EditText) findViewById(R.id.hobbies);

insert = (Button) findViewById(R.id.insert);

insert.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

nameStr = name.getText().toString();
countryStr = country.getText().toString();
emailStr = email.getText().toString();
hobbiesStr = hobbies.getText().toString();

new Insert().execute();
}
});
}

public class Insert extends AsyncTask<String, Void, Boolean> {

ProgressDialog dialog;

@Override
protected void onPreExecute() {
super.onPreExecute();
dialog = new ProgressDialog(MainActivity.this);
dialog.setMessage("Inserting details, please wait");
dialog.setTitle("Connecting... ");
dialog.show();
dialog.setCancelable(false);
}

@Override
protected Boolean doInBackground(String... urls) {


try {

List<NameValuePair> insert = new ArrayList<NameValuePair>();
insert.add(new BasicNameValuePair("name", nameStr));
insert.add(new BasicNameValuePair("country", countryStr));
insert.add(new BasicNameValuePair("email", emailStr));
insert.add(new BasicNameValuePair("hobbies", hobbiesStr));


HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(
"http://bookcompr.netne.net/input.php"); // link to connect to database
httpPost.setEntity(new UrlEncodedFormEntity(insert));

HttpResponse response = httpClient.execute(httpPost);

HttpEntity entity = response.getEntity();

return true;


} catch (IOException e) {
e.printStackTrace();

}


return false;
}

protected void onPostExecute(Boolean result) {
dialog.cancel();

AlertDialog.Builder ac = new AlertDialog.Builder(MainActivity.this);
ac.setTitle("Result");
ac.setMessage("Details Successfully Inserted");
ac.setCancelable(true);

ac.setPositiveButton(
"Ok",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();

}
});

AlertDialog alert = ac.create();
alert.show();
}

}

}

最佳答案

在 AsyncTask 的构造函数中,您需要传递 Context 并在需要时使用它。

public class Insert extends AsyncTask<Void, Void, String> {
private Context mContext;
public Insert (Context context){
mContext = context;
}

protected void onPreExecute() {
super.onPreExecute();
ProgressDialog pd= new ProgressDialog(mContext); //changes is here
pd.setMessage("your message");
pd.show();
}
}

在mainActivity中像这样使用它。

Insert insert = new Insert(getApplicationContext());
insert.execute();

关于java - 错误: is not an enclosing class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39476632/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com