【发布时间】:2017-10-30 12:56:37
【问题描述】:
从main 活动我称之为后台进程。这里在这个背景下有onprexecute 方法在else 部分有一个if else 条件我需要添加一个Snackbar
public class background extends AsyncTask<String,Void,String> {
private ProgressDialog dialog;
private ProgressDialog progressDialog;
private ConnectivityManager cm;
private String jsonurl, jsonstring;
public static String listRequest;
private mobile_form mform;
private Context ctx;
ProgressBar progressbar;
background (Context ctx){
this.ctx = ctx;
cm = (ConnectivityManager)ctx.getSystemService(Context.CONNECTIVITY_SERVICE);
dialog = new ProgressDialog(ctx);
progressbar = new ProgressBar(ctx);
progressbar.getIndeterminateDrawable().setColorFilter(Color.parseColor("#039BE5"), android.graphics.PorterDuff.Mode.SRC_IN);
mform = new mobile_form();
}
@Override
protected void onPreExecute() {
super.onPreExecute();
jsonurl = "https://crackstrickblog.000webhostapp.com/json_get_data.php";
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
boolean isConnected = activeNetwork != null && activeNetwork.isConnectedOrConnecting();
if (isConnected) {
dialog.setCancelable(false);
dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
dialog.show();
dialog.setContentView(progressbar);
}
else {
// here i need to add snackbar like this
//Snackbar.make(this.findViewById(android.R.id.content), "Message", Snackbar.LENGTH_LONG).show();
}
}
@Override
protected void onProgressUpdate(Void... values) {
super.onProgressUpdate(values);
}
@Override
protected void onPostExecute(String result) {
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
boolean isConnected = activeNetwork != null && activeNetwork.isConnectedOrConnecting();
if (isConnected) {
ctx.startActivity(new Intent(ctx, mobile_form.class));
if (dialog.isShowing())
dialog.dismiss();
}
}
@Override
protected String doInBackground(String... voids) {
return null;
}
}
【问题讨论】:
-
然后添加,有什么问题?
-
here in this.findViewById(android.R.id.content) 它显示 findViewById 无法解析方法 findViewById(int)
-
没错,因为 AsyncTask 没有这样的方法。例如,您需要以与使用 Context 相同的方式在构造函数参数中传递 View,并在 Snackbar 中使用它。
-
你能告诉如何通过吗
-
background (Context ctx){->background (Context ctx, View view){。然后将视图存储到一个字段中,并在 Snackbar 中传递:Snackbar.make(view, "Message", Snackbar.LENGTH_LONG).show();
标签: java android android-activity android-asynctask