2014-05-13 157 views
0

OK,所以我有一個活動在啓動時開始(活動一)此活動運行兩個其他活動(活動二和活動三),每個活動運行java類,然後加載到另一個活動(活動四)觸摸事件。活動四然後打開主類。所有這些部分都按照應有的方式工作。如何從運行單獨活動的java類打開活動?

我遇到的問題是從主類和活動四開始一個新的活動(活動五)。我有我的意圖,我的XML佈局文件,和我的清單正確創建。這裏是會很奇怪我...

1)如果我把活動五開始觸摸事件它的偉大工程(我的觸摸事件是在交換機的情況下,它的工作原理,如果我把它放在主類註冊觸摸事件或活動四處理主要類的觸摸事件)。如果我將一條if語句放入觸摸事件中,它會失敗並且沒有錯誤(處理程序的行爲就像從未發生過的事件一樣),除非我在每個「if」語句中都放置Activity Five(這是相同的不管我是隻使用「if」還是多個非嵌套的「if」語句或「if/else if」語句,結果總是相同的,處理程序就像沒有觸發事件發生,除非所有if語句都啓動了Activity Five。 3)如果我把Activity Five放在任何Activity的Activity中,或者在Main Class中有任何參數,我會得到一個錯誤,說我不能從沒有Looper.prepare()的處理器開始活動。如果我將Looper.prepare()放入意圖調用方法中,那麼它會在我的startActivity(ActivityFive)調用中聲明空指針異常。

讓我嘗試和100%清楚這裏...

我不改變的意圖呼叫或startActivity()調用的。我唯一改變的是位置和周圍的限定符(如果語句)。出於某種原因,startActivity調用只有在我將其放入觸摸事件並且無論註冊表爲true的情況下啓動活動時才起作用。

我的其他活動都是從觸摸事件或彼此之間的平滑自動流動開始的。

活動五需要由兩種啓動:

1)如果語句外部觸摸事件處理程序:

if (object1.isGone) 
    { 

     ... 

     ActivityFour aFour = new ActivityFour(); 
     Intent aFive = new Intent (afour, ActivityFive.class) 
     aFour.startActivity(aFive); 

    } 

    if (!object1.isGone) 
    { 

     (do nothing) 

    } 

2)或者,如果觸摸事件處理中的語句:

switch (screen.touchAction) 
    { 

     case screen.touch_Middle: 

      if (object1.isGone) 
      { 

       ... 
       ActivityFour aFour = new ActivityFour(); 
       Intent aFive = new Intent (afour, ActivityFive.class) 
       aFour.startActivity(aFive); 

      } 

      if (!object1.isGone) 
      { 

       (do nothing) 

      } 

     break; 

感謝您的幫助,我一定會+1,並檢查解決這種瘋狂的答案。

+0

什麼是'object1.isGone'? – Juanpe

+0

visible = true vs visible = false。我能想到的最着名的例子是:如果玩家已經死了,就開始練習五。如果玩家沒有死,什麼也不做。 – ProgrammerInTraining

回答

0

你有這樣的:

ActivityFour aFour = new ActivityFour(); 
    Intent aFive = new Intent (afour, ActivityFive.class) 
    aFour.startActivity(aFive); 

絕對肯定不能創建Activity使用new的實例!只有Android框架可以創建Android組件(活動,服務,廣播接收器,內容提供者)的實例。這是由於這些組件需要Android框架在實例化期間設置正確的Context

如果你只是想啓動一個ActivityMainClass,您將需要一個Context實例傳遞給MainClass或者當您創建的MainClass或用set...()方法晚些時候的情況下,你需要使用它之前。然後,當你想開始一個Activity,你可以這樣做:

Intent aFive = new Intent (afour, ActivityFive.class) 
context.startActivity(aFive); 

Context可以是一個Activity(從Context繼承),也可以是全球性的應用背景下,你可以在一個Activity得到使用getApplicationContext()

+0

好吧,我喜歡你要去的地方,而且我一直在思考過程。唯一的情況是,僅當我將startActivity附加到按鈕單擊事件或某種其他類型的事件處理程序時,上下文才起作用。如果我將startActivity(aFive)調用附加到非事件處理程序,它將停止工作。是否有一種特殊的線條語法或調用,我不得不使用事件處理程序,如觸摸事件?另外,我很抱歉本週去參加MIA。生活幾天瘋了。 – ProgrammerInTraining

+0

一個更好的問題。在觸摸事件(按鈕單擊事件)中打開一個新的活動時,我具有正確的語法功能。我如何得到它現在在布爾=真事件? – ProgrammerInTraining

+0

對不起,我不明白。您可以隨時開始活動。它不需要被綁定到某個事件。還有一些其他問題。也許你應該發佈更多的代碼或編寫一個小測試程序來測試這種情況。 –