【发布时间】:2016-08-03 06:16:50
【问题描述】:
我正在尝试在我的应用程序中实现一个简单的逻辑,其中向用户显示一个弹出窗口(在应用程序启动的某个时间之后)。弹出窗口仅显示带有一些信息消息的TextView。每次启动应用程序时都会刷新此消息并显示新消息。
弹出窗口的 UI 与我的应用程序 UI 相匹配 - 这里可能只需要弹出背景图像。弹出窗口的右上角还显示了一个关闭按钮 (X) - 用于关闭此弹出窗口。
显示消息的逻辑:我有一个 String 数组,其中存储了大约 100 个字符串。我从这个数组中随机选择一个字符串并填充弹出窗口TextView 显示消息。请建议是否有比我在这里所做的更好的方法。也有可能逻辑如果选择一条消息,那么在其他消息至少显示一次之前不会选择同一条消息?
显示弹出窗口的逻辑:这是我无法实现的。我不想用任何用户Event 或Button 点击来锚定弹出窗口。我只是想在一段时间后显示消息 - 比如说
Thread.sleep(3000);
现在我尝试使用下面的代码使用PopupWindow。
PopupWindow infoPopup;
LinearLayout infoLayout;
TextView infoTextView;
Button infoButton;
infoTextView = new TextView(this);
infoTextView.setText("Testing Popup Text");
infoTextView.setPadding(10,10,10,10);
infoButton = new Button(this);
infoButton.setText("Close");
infoLayout = new LinearLayout(this);
infoLayout.setOrientation(LinearLayout.VERTICAL);
infoLayout.addView(infoTextView);
infoLayout.addView(infoButton);
infoPopup = new PopupWindow(infoLayout,LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT);
infoPopup.setContentView(infoLayout);
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
infoPopup.showAtLocation((CoordinatorLayout)findViewById(R.id.main_content),Gravity.CENTER,100,100);
但是这个弹出窗口在最后一行显示错误,在我的
上给出了空指针(CoordinatorLayout)findViewById(R.id.main_content)
参数。
我遇到的问题是:
首先,我不确定这是否是显示自定义 UI 弹出窗口的正确方法。我知道
AlertDialog,但不确定在这种情况下哪个是最佳选择 - 请提出建议。为什么
CoordinatorLayout显示空指针?如何在此 Popup 中实现右上角 (X) 按钮逻辑?
【问题讨论】:
标签: java android android-alertdialog popupwindow