2010-08-17 130 views
2

我正在構建一款適用於某種測驗類型的遊戲。我問用戶這個問題,當他提交答案時(點擊或觸摸正確的答案),我需要刷新頁面以及其他一些問題。在Android上重新啓動活動的最佳方法?

我應該如何實施?如何等待用戶回答並在onClick或OnTouch偵聽器完成時繼續? 我應該使用Handler類,意圖還是別的嗎?

Thx提前尋求幫助。

編輯:我想下一個場景: 在屏幕上我有一個問題和3-4可點擊的ImageButtons。我從自定義的showQA()函數中構建了一些dinamically的佈局。用戶選擇答案,如果他點擊正確答案,我應該在屏幕上開始某種類型的動畫。我已經完成了onClickListener。現在,我需要從showQA()函數中再次構建佈局(顯示新的問題和答案),該函數必須在動畫顯示給用戶之後調用。如何知道onClickListener()何時完成其工作?

+0

請勿重新啓動活動。要麼調用一個新的活動或切換視圖。重新開始的活動違背了Android的想法 – Falmarri 2010-08-17 00:25:58

+0

是的,你是對的。即使我打電話給同一個活動,轉換活動的效果也會出現,我不需要這些。 – 2010-08-17 01:04:29

回答

0

我已經解決了使用AnimationListener的問題。 我在用戶點擊答案後開始動畫,並從onAnimationEnd方法調用showQA()函數來創建用戶界面。

2

我認爲在你的情況下,一個活動就足夠了,你只需在這個活動中放置兩個視圖(問題,答案),在這個視圖上相應地切換可見性並更新問題/答案內容。

對於點擊/觸摸: 取決於用戶需要提供什麼樣的答案(輸入文本,單擊按鈕,使用滑塊等)。但是一個監聽器是正確的,例如一個按鈕的onClickListener。

對於測驗,您可能想要在自定義窗口小部件中實現您的特殊邏輯,這些窗口可以從基本窗口擴展,即按鈕組即A) - E)應答按鈕(即靈活的數字)等,抽象遊戲邏輯一點。

但是,這真的取決於你的遊戲細節,不知道遊戲細節知道遊戲。

+0

好吧,在我的第一篇文章中,我試圖簡化場景。 在屏幕上我有一個問題和3-4可點擊的ImageButtons。 我從自定義showQA()函數中構建了一些dinamically的佈局。 我想要下一個場景: 用戶選擇答案,如果他點擊正確答案,我應該在屏幕上開始某種類型的動畫。我已經完成了onClickListener。現在,我需要從showQA()函數中再次構建佈局(顯示新的問題和答案),該函數必須在動畫顯示給用戶之後調用。如何知道onClickListener()何時完成其工作? – 2010-08-17 01:11:32

+0

在ClickListener/onClick方法結束時,您可以添加任何代碼並調用所需的方法,即showQA(),如果您喜歡 – 2010-08-18 04:40:18

1

通常,組織應用程序的最簡單方法是爲每個新視圖啓動一個活動的新實例。

就你而言,你可能有一個基本活動,其中包含所有問題的列表。

您的ShowQuestionActivity通過意向附加功能接受問題和答案選項列表。

BaseActivity會爲第一個問題的結果啓動ShowQuestionActivity。當用戶點擊答案時,ShowQuestionActivity完成。它可以通過一個額外的答案。

BaseActivity會立即啓動ShowQuestionActivity以獲得第二個問題的結果。對於用戶來說,這將看起來就像您剛剛從一個問題順利移到下一個問題。

或者,您可以讓每個ShowQuestionActivity啓動下一個ShowQuestionActivity,但是您需要跟蹤顯示哪個問題以及所有通過意圖的答案。

+0

我明白您的意思。 但是,我沒有成功使它「順利」。 我的意思是,它始終顯示新活動開始時的過渡。 我想得到相同的結果,就像我剛剛叫imageView.setBackgroundResouce(R.drawable.something_else).. 這裏是我試過的代碼: 意圖intent = new Intent(); intent.setClass(SomeClass.this,CalledClass.class); startActivity(intent); finish(); – 2010-08-17 01:19:32

+0

請參閱http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_NO_ANIMATION – 2010-08-17 02:05:26

+0

我試圖在意圖中設置該標誌並且沒有任何更改。另外我試着將它傳遞給startActivityForResult(),但也沒有結果。 我正在開發Android 2.1並在HTC Desire上進行測試。 – 2010-08-17 12:48:19