无法解析符号AlertDialogActivity

时间:2014-09-17 14:48:08

标签: java android alertdialog

所以我只想创建一个警报对话框,它只是一条消息(没有按钮或标题)。我想在后台任务运行时显示警告对话框。警报对话框将在UI线程上运行。

这是我到目前为止所做的事情:

protected void onPreExecute() {
        super.onPreExecute();

        AlertDialog altDlg;
        altDlg = new AlertDialog.Builder(AlertDialogActivity.this).create();

        altDlg.setMessage("Retrieving Information. Please Wait");

        altDlg.show();

    }

我也试过这样做:

 AlertDialog.Builder builder = new AlertDialog.Builder(this)
            .setMessage("Retrieve Info. Please Wait").show();

我得到的第一个错误是:

  cannot find symbol 'AlertDialogActivity'
  symbol:   class AlertDialogActivity
  location: class com.example.Device.Activity

第二次尝试错误说:

 incompatible types: com.example.Device.Activity cannot be converted to android.content.Context

我不确定在两种情况下我做错了什么。我只是想在后台任务运行时显示基本消息,我希望最接近的事情是AlertDialog。

编辑如何正确设置AsyncTask:

我想做的小背景。我只想读取文件,反序列化并将其内容保存到数据库中。

现在我假设我只需要两个活动。

一个是我的主要活动:

public class MainActivity extends Activity {

 /**
     * Called when the activity is first created.
     */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.setup);

   final Button setup_button = (Button) findViewById(R.id.setup_button);
   setup_button.setOnClickListener (new View.OnClickListener() {
       public void onClick(View view){
           setContentView(R.layout.retrieve_info);
    }
  });
}
}

现在onClick事件只会移动到新视图,该视图应该显示消息或警告对话框,其中显示检索信息。请耐心等待。它在读取文件并保存到db时显示消息。读取并保存文件后,该消息应消失,并说出设置完成等信息。

到目前为止,我的第二项活动是:

public class RetrieveInfoActivity extends AsyncTask<Void,Void,Void>  {


    private ProgressDialog progressBar;

    private void retrieveInfo(String fileName) {

        try {

            File file = new File(fileName);
            Scanner scanner = new Scanner(file);

            //Read all the lines until there are no more lines
            while (scanner.hasNextLine()) {

                scanner.nextLine();

            //TODO: deserialize and save to db

            }
            scanner.close();
        }

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

    @Override
    protected Void doInBackground(Void... params) {
        retrieveInfo("test.txt"); 
        return null;
    }

    protected void onPreExecute() {
        super.onPreExecute();

        progressBar.setIndeterminate(true);
        progressBar.setCancelable(false);
        progressBar.setMessage("Retrieve Information.Please wait");
        progressBar.show();

    }

    @Override
    protected void onPostExecute() {

        progressBar.dismiss();
    }

}

到目前为止我真正拥有的一切。我只需要了解如何在Android中进行概念设置。

希望这是有道理的。

3 个答案:

答案 0 :(得分:0)

试试这个:

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());

答案 1 :(得分:0)

而不是使用AlertDialog使用ProgressBar,它将为您提供帮助。

private ProgressDialog progressBar;

@Override
    protected void onPreExecute() {

        super.onPreExecute();

        progressBar.setIndeterminate(true);
        progressBar.setCancelable(false);
        progressBar.setMessage("Your message");
        progressBar.show(); 
}

@Override
    protected void onPostExecute(final String error_code) {

            progressBar.dismiss();
}

答案 2 :(得分:0)

看起来您正在扩展AsyncTask并尝试将其用作上下文。因为AsyncTask本身只是一个抽象类,所以不会起作用。

您需要为AsyncTask创建一个自定义构造函数来获取Context:

public class MyTask extends AsyncTask<Void, Void, Void> {

    private Context mCtx;

    public MyTask(Context context) {
        mCtx = context;
    }
    ...

然后在启动AsyncTask时,传递上下文:

new MyTask(this).execute();

另一种方法是使AsyncTask成为内部类,并在创建对话框时使用YourActivity.this。例如:

public class YourActivity extends Activity {

    ...

    private class MyTask extends AsyncTask<Void, Void, Void> {

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            AlertDialog dialog = new AlertDialog.Builder(YourActivity.this).create();
        }

        @Override
        protected Void doInBackground(Void... params) {
            ...
        }
    }

}