我正在制作我的第一款安卓游戏,我有一些我希望用java和C#制作简单游戏的知识实现的东西。为此,我有扩展Activity的主类,然后我创建了一个GameView类的对象,它将SurfaceView和setContentView扩展到该类。 这里有一些代码:
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
gameView = new GameView(this);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(gameView);
在我的GameView类中,我拥有一个简单游戏的所有常用部分,一个循环和Sprite对象等。这一切都很好用,直到打开一个AlertDialog来从用户那里获取文本输入以保存游戏。这是我担心我错过了这一点的部分。在android中编程,因为我已经尝试过实现这个显示的解决方案
这里: Android AlertDialog inside AsyncTask
在这里: How do I display an alert dialog on 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();
}
}
答案 0 :(得分:0)
您必须在onPostExecute
方法中显示Alert dailog,然后才能显示。您可以在后台运行方法中显示Alert Dailog。
首选以下链接:
Android AlertDialog inside AsyncTask
已更新
Instead of AlertDialog alertDialog use
AlertDialog.Builder alertDialogBuilder
然后创建对话
final AlertDialog alertDailog = alertDialogBuilder.create();
最后:
alertDailog.show();