当前位置: 首页 > 知识库问答 >
问题:

无法在程序结构中创建AlertDialog

逑衡
2023-03-14

我正在制作我的第一个Android游戏,我有我想要的用java和C#制作简单游戏的知识来实现的一般东西。为此,我有一个扩展活动的主类,然后我有一个扩展表面视图的GameView类的对象,并将setContentView创建到该类。以下是一些代码

public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    gameView = new GameView(this);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(gameView);

在我的GameView类中,我有一个简单游戏的所有常见部分,包括循环和精灵对象等。这一切都很好,直到打开AlertDialog以从用户处获取文本输入以保存游戏。这是我担心的部分,我“错过了在android中编程的要点”,因为我已经尝试实现了解决方案

这里:AsyncTask内部的Android AlertDialog

这里:如何在Android上显示警报对话框?

在这里: http://www.androidsnippets.com/prompt-user-input-with-an-alertdialog

我收到错误“无法在未调用Looper的线程内创建处理程序”。prepare()'我已经尝试过几次了。我已经接近完成这个项目,现在我想我已经错过了基本的android编程结构。问题是我真的不知道应该在哪里创建和显示AlertDialog,它应该在主Activity或GameView SurfaceView中。如果它在主活动中,我如何退出GameView返回活动,并为下一个(视图?)返回一些数据在AlertDialog中使用。

很抱歉,如果这看起来太模糊了,那是因为我刚刚尝试创建了一个AlertDialog,这让我无法理解,我觉得我错过了一些东西。

所以我的问题是,我的结构有什么问题,更具体地说,我把 AlertDialog 放在哪里;我可以在从我的 GameView 类调用的某个方法或类中运行它,还是需要退出/结束该类回到主活动,并在其中运行它?

private class myAsyncTask extends AsyncTask<String, Void, String> {

AlertDialog alertDialog;
protected void onPreExecute() 
{
    super.onPreExecute();
    alertDialog = new AlertDialog.Builder(this);
}
@Override
protected String doInBackground(String... params)
{       
       return null;
}
@Override
protected void onPostExecute(String result) 
{
       super.onPostExecute(result);

       alertDialog.setTitle("The Process");  
       //alertDialog.setIcon(R.drawable.success);
       alertDialog.setCanceledOnTouchOutside(false);
       alertDialog.setMessage("All done!");  
       alertDialog.setButton(AlertDialog.BUTTON_NEUTRAL, "OK",
       new DialogInterface.OnClickListener() 
       {
                       public void onClick(DialogInterface dialog, int which) 
                       {

                       }
                               });
       alertDialog.setOnDismissListener(new DialogInterface.OnDismissListener() 
       {          
 @Override
 public void onDismiss(DialogInterface dialog) 
 {

 }
 });
 alertDialog.show();
 }

}

共有1个答案

葛航
2023-03-14

您必须在 onPostExecute 方法中显示警报 dailog,然后只有您可以显示。您可以在后台运行方法中显示警报 Dailog。

首选下面的链接:

AsyncTask内部的Android AlertDialog

更新

 Instead of AlertDialog alertDialog use
 AlertDialog.Builder alertDialogBuilder

然后创建对话框

final AlertDialog alertDailog = alertDialogBuilder.create();

最后:

alertDailog.show();
 类似资料:
  • 我最近开始使用Android Studio。我正在通过教程学习,我制作了一个下载原始数据的flicker应用程序的一部分。当我每次尝试运行它时,我都会在“消息”选项卡中看到这个错误: 错误:配置项目': app'时发生问题。无法解析配置': app:_debugCompile'的所有依赖项。找不到com.android.support: appcomat-v7:22的任何匹配项。因为com.and

  • 我有一个代号为one的应用,在android和IOS中运行正常。第二个应用程序,在android版本中正常工作,但在发送到服务器后,在Ios版本中总是显示错误。我正在删除构建,刷新libs文件,但每次,它在构建后显示一个错误,只有在应用程序不工作。最近的错误:

  • 在gradle attemp构建项目后有一个日志(使用Pro buf) :app:GeneratedBugProto失败 失败:生成失败,出现异常。 > 错误:任务“:app:generateDebugProto”的执行失败。 协议:标准输出:。stderr:/Users//app/build/extracted protos/main:警告:目录不存在/用户//app/src/debug/pro

  • 注:本章节正在开发中。 虽然 basic 和 advanced 项目模板能够满足你的大部分需求,但是, 你仍有可能需要创建你自己的项目模板来开始项目。 Yii 的项目模板是一个包含 composer.json 文件的仓库,并被注册为一个 Composer package。任何一个仓库都可以被标识为一个 Composer package, 只要让其可以通过 create-project Compos

  • 我正在尝试在STS中创建一个默认的Spring Boot应用程序。它在STS文件中创建了一个“Spring starter Project”-->。创建项目后未进行任何更改。错误立即显示在POM文件中...

  • 问题内容: 我是Java的新手,我试图找到一种方法来在C语言中存储诸如结构之类的信息。例如,说我想让一名程序雇用员工。它将从用户那里获得一个名字,姓氏和ID号并将其存储起来。然后,用户可以根据条件查看该信息(例如,如果数据库有多于1名员工)。有没有人建议这样做的最佳方法? 问题答案: C中的结构就像Java中的类一样,功能更强大,因为Java中的类可以包含方法,而C ++可以。您创建一个新类。例如