2016-08-03 116 views
1

我正試圖在我的應用程序中實現一個簡單的邏輯,在該應用程序中用戶顯示一個彈出窗口(在應用程序啓動的某個時間之後)。彈出窗口只顯示一個TextView以及一些信息消息。每次啓動應用程序並顯示新消息時,都會刷新此消息。 彈出窗口的UI與我的應用程序UI相匹配 - 這裏可能只需彈出背景圖片。還有一個關閉按鈕(X)顯示在彈出窗口的右上角 - 關閉此彈出窗口。Android彈出窗口與Android對話框

顯示消息的邏輯:我有一個String數組,其中存儲了大約100個字符串。我從這個數組中隨機選擇一個字符串,並填充顯示消息的彈出框TextView。請建議是否有比我在這裏已經做的更好的方法。也有可能邏輯,如果一個消息被挑選,那麼相同的消息不會被挑選,直到其他消息至少顯示一次?

顯示彈出窗口的邏輯:這是我無法實現的。我不想將彈出式廣告與任何用戶EventButton單擊。我只是想在一段時間後顯示消息 - 說

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)

參數在最後一行給出空指針錯誤。

,我得到的問題是:所有的

  1. 首先,我不知道這是顯示自定義用戶界面彈出的正確方法。我知道AlertDialog,但不知道哪種情況下最好的選擇 - 請建議。

  2. 爲什麼CoordinatorLayout顯示空指針?

  3. 如何在此彈出窗口中實現右上角(X)按鈕邏輯?

回答

1

是有用於顯示Android中自定義用戶界面彈出這麼多的選擇。您可以從PopupWindow,AlertDialog或Dialog Activity中選擇一個。你需要決定哪種最適合你。

如果您需要自定義您的用戶界面並且必須顯示一個列表或一些複雜的GUI,那麼我建議您啓動一個Activitytheme.Dialog。只需將Activity的主題設置爲android:theme="@android:style/Theme.Holo.Light.Dialog"即可。有大量的教程來實現對話框Activity

PopupWindow是另一種定製自定義彈出窗口中任何位置的工具。如果你總是在屏幕中間顯示這個彈出窗口,那麼我想建議不要使用這個。 AlertDialog應該可以正常工作。

AlertDialog有許多變種,只要我可以假設你的問題,這一個最適合你。您可以在對話框的右上角也有一個十字按鈕(您可以在任何地方設置圖標,因爲您可以將自定義佈局提供給AlertDialog)。我個人使用此library爲我的AlertDialog提供自定義佈局。你也可以看看這個。

2.NullPointerException很簡單。您的佈局沒有任何標識爲main_content的ID。發佈你的logcat如果這不能解決你的問題。也張貼布局。

3.正如我前面告訴過你的,我使用該庫爲AlertDialog提供自定義佈局,你也可以看看它。因此,在實現這個庫之後,您可以輕鬆地使用十字按鈕來設計自己的佈局,並輕鬆實現onClick功能。

希望這會有所幫助。

+1

謝謝Reaz。我會根據你的建議工作。我個人喜歡你建議的對話活動,但用AlertDialog和cutom git庫一起也不是一個壞主意。一旦我申請,我會將你的答覆標記爲答案。在我的佈局文件中還有一個main_content佈局。它只是沒有選擇它。我正在努力尋找決議。如果我發現它會發布logcat和解決方案!再次感謝! –

+1

我終於結束了使用此功能的自定義對話框。有效! –

+0

很高興聽到! –