在阅读了AlertDialog上的许多解决方案后,我终于设法显示了一条消息。该消息是小游戏中巡回演出的柜台。在玩家进入下一轮之前,该消息应弹出。它应该保留几秒钟,然后独自消失。
发生了什么:该程序被困在显示警报窗口中,而不会转到I 行。知道如何在不引入用户必须击中的按钮的情况下解决此问题?我已经取出了解雇(),因为无论如何还是ScreenRefresh。但是目前,它仍然没有达到这一点。我正在与Android Studio合作2.2.2
如果有人可以研究它,那将是很棒的。预先感谢。
这是代码:
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.os.Handler;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.Date;
import java.util.Random;
private void startRound() {
int i=0;
round = round +1;
AlertDialog alertDialog = new AlertDialog.Builder(this).create();
alertDialog.setTitle(" ");
alertDialog.setMessage("Round " + round);
while(i<100) {
alertDialog.show();
i++;
}
// alertDialog.dismiss();
screenrefresh();
handler();
您应该显示对话框并使用处理程序解散:
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
alertDialog.dismiss();
}
}, 100);
如果您刷新活动,则可以使用吐司。
您可以自定义吐司样式。
我选择了Ghorbanzadeh的提示来使用吐司。现在看起来像这样:
private void startRound() {
round = round +1;
if( round != 1 ) {
CharSequence text = ("Starte Runde " + round);
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(this, text, duration);
toast.setGravity(Gravity.CENTER_HORIZONTAL |Gravity.CENTER_VERTICAL, 0, 0);
toast.show();
}
}
杂物集中在屏幕上,持续时间足够长以至于可以看到。这是我一直在寻找的简短而简单的代码。再次感谢您的快速帮助。
i 没有增加,因为您的警报对话框需要首先关闭。所以它被卡住了。
下面的代码显示对话框并在5秒钟后关闭,用户无法将其解散。
final AlertDialog alertDialog = new AlertDialog.Builder(this).create();
alertDialog.setTitle(" ");
alertDialog.setMessage("Round " + round);
alertDialog.setCancelable(false); // if you want it not to be dismissed by user
alertDialog.show();
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(500); // seconds * 100
} catch (InterruptedException e) {
if (alertDialog.isShowing())
{
alertDialog.dismiss();
}
e.printStackTrace();
}finally {
if (alertDialog.isShowing())
{
alertDialog.dismiss();
}
}
}
}).run();
对于您的任务snackbars将更加可接受。
在layout.xml中添加coordinatorlayout
<android.support.design.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:id="@+id/snackbarPosition"/>
刚运行Snackbar:
final View.OnClickListener clickListener = new View.OnClickListener() {
public void onClick(View v) {
...
}
};
final View coordinatorLayoutView = findViewById(R.id.snackbarPosition);
Snackbar
.make(coordinatorLayoutView, R.string.snackbar_text, Snackbar.LENGTH_LONG)
.setAction(R.string.snackbar_action_undo, clickListener)
.show();
您还可以信任
还有一个选项在向对话框显示向用户
显示时,请尝试实现AlarmManger用于AlarmManger实施
请使用
PendingIntent.getBroadcast(mContext,
12345, intent, PendingIntent.FLAG_ONE_SHOT);
和u也可以取消警报管理器