gpt4 book ai didi

java - 如何让方法暂停并等待 Android 的输入?

转载 作者:行者123 更新时间:2023-11-30 09:53:04 24 4
gpt4 key购买 nike

基本上我已经创建了一个 Blackjack 应用程序,它使用多种方法来调用并传递所需的信息(关于卡片和操作)。我在屏幕上显示了 2 个可以点击的按钮(点击并站立)。现在我有一个叫做 player turn... 的方法,这是当我(通过静态整数)选择一个按钮时,事情就会发生。但是我用一个无限的 while 循环来做到这一点,认为它只会继续检查是否按下了按钮,然后只在按下按钮时才执行操作。这不起作用,因为每次 textview 或 imageview 更改后我的屏幕都没有刷新,因此一旦我点击开始游戏,游戏就会出现“卡住”(由于该方法永无止境),因此我无法单击所述按钮.有没有办法在 java 中调用类似于键盘监听器的东西(暂停 Activity 并等待用户输入),在 android 中?如果没有,您建议的解决方法是什么?最后(虽然目前不那么重要)我如何在每次更改后正确刷新所有内容(我相信我需要使用 invalidate.. 虽然我不确定在 invalidate 之前有什么所以它会刷新整个东西)?提前致谢。

最佳答案

看起来像一个新的 Activity(由 startActivityForResult 调用)和一个 Handler(由 onActivityResult 调用) ) 可以解决您的问题。

看看下面的设计 fragment :

activity interactions

假设您愿意“hibernate ”的方法是 MainActivity 类中的 doSomething。我假设这是从某个事件处理程序实现中调用的。您应该将该方法的所有调用移至 BackgroundActivity Activity 中,- 应该显示 ProgressDialog 和/或什么都不显示 -。
在您的 doSomething 方法中,您应该通过使用

指向 BackgroundActivity 的 Intent 来启动 Activity
this.startActivityForResult(new Intent(this, BackgroundActivity.class), 
BG_ACTIVITY_ID);

其中 BG_ACTIVITY_ID 是您开始 Activity 的唯一标识符,因此当它完成时,您可以处理它。

processBackgroundData 中(或当后台 Activity 完成处理时),您应该在调用 finish() 之前设置结果:

final Intent intent = new Intent();
intent.putExtra(KEY_FOR_DATA_YOU_NEED, dataYouNeed);
setResult(Activity.RESULT_OK, intent);
finish();

在您的 MainActivity 中,您还应该覆盖 onActivityResult 方法,以从已完成的 BackgroundActivity 任务中检索必要的信息:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
//you might also want to check if the resultCode is `Activity.RESULT_OK`...
switch (requestCode)
{
case BG_ACTIVITY_ID:
//get the data you need
final String dataYouNeed = data.getStringExtra(KEY_FOR_DATA_YOU_NEED);
//process the data...
//if necessary (threads!), call your backgroundHandler's
//sendMessage with the retrieved informations as obj.parameters
[...]
break;
default:
[...]
break;
}
}

在你的 BackgroundHandlerhandleMessage 方法中(因为你回到了 ui 线程:你的主应用程序运行的线程)你可以做所有的必要的用户界面修改,并监听用户事件。

这样您就摆脱了无限循环,并且可以始终了解用户交互。

关于java - 如何让方法暂停并等待 Android 的输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4023972/

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