我正試圖在我的應用程序中實現一個簡單的邏輯,在該應用程序中用戶顯示一個彈出窗口(在應用程序啓動的某個時間之後)。彈出窗口只顯示一個TextView
以及一些信息消息。每次啓動應用程序並顯示新消息時,都會刷新此消息。 彈出窗口的UI與我的應用程序UI相匹配 - 這裏可能只需彈出背景圖片。還有一個關閉按鈕(X)顯示在彈出窗口的右上角 - 關閉此彈出窗口。Android彈出窗口與Android對話框
顯示消息的邏輯:我有一個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)
參數在最後一行給出空指針錯誤。
,我得到的問題是:所有的
首先,我不知道這是顯示自定義用戶界面彈出的正確方法。我知道
AlertDialog
,但不知道哪種情況下最好的選擇 - 請建議。爲什麼
CoordinatorLayout
顯示空指針?如何在此彈出窗口中實現右上角(X)按鈕邏輯?
謝謝Reaz。我會根據你的建議工作。我個人喜歡你建議的對話活動,但用AlertDialog和cutom git庫一起也不是一個壞主意。一旦我申請,我會將你的答覆標記爲答案。在我的佈局文件中還有一個main_content佈局。它只是沒有選擇它。我正在努力尋找決議。如果我發現它會發布logcat和解決方案!再次感謝! –
我終於結束了使用此功能的自定義對話框。有效! –
很高興聽到! –