4

所以,讓我們在我的主要活動說,我有一個數組聲明如下,沒有使用內部的任何主要的方法的任何問題,即時通訊:初級 - 使用一個類定義的變量在另一個類

public int currentPrices[] = {0,0,0,0,0,0,0,0,0}; 

現在,我的buyDialog類如下:

package foosh.Frontier; 


import android.app.Activity; 
import android.os.Bundle; 
import foosh.Frontier.*; 

public class buyDialog extends Activity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // Be sure to call the super class. 
     super.onCreate(savedInstanceState); 

     currentPrices[0]=999; 

     //insert setup magic here 
     setContentView(R.layout.buydialog); 
} } 

的Eclipse堅持說,currentPrices不能得到解決。如何將兒童活動鏈接到父活動的變量?

我可能已經完成了我的意圖錯誤,因爲我在構建它們時很新穎。但是這裏是從主線:

case R.id.buyButton1: 
      currentRes = masterRes.get(0); 
      Intent intent = new Intent(); 
      intent.setClass(main.this, buyDialog.class); 
      startActivity(intent); 

回答

8

簡單的答案是你必須限定它與包含實例的名稱。

因此,如果實例myinstance訪問currentPrices場,你可以這樣做:

myinstance.currentPrices 

但是,你真的應該使用getter和setter而且有很多關於實際上得到一個問題在這裏處理活動的實例。我建議在使用Android之前先弄清楚一下Java書的介紹。查看http://math.hws.edu/javanotes/以獲得一個好的在線介紹。

根據你的標籤,我假設你有一些全局變量的概念。 Java中沒有這樣的東西。在實踐中,您可以擁有全局可訪問的變量static。例如

public class MyClass{ 
    public static int MY_VALUE = 4; 
} 

您可以通過編寫

MyClass.MY_VALUE 

但是訪問,與實例變量,那就是,一個沒有被static關鍵字合格的,你必須有一個類的實例已通過new關鍵字分配。

例如

MyClass someInstance = new MyClass(); 
someInstance.currentPrices 

的原因,這是與活動更復雜是因爲你沒有訪問,除非你做一些真正的創意正在使用的活動類的實例。

這有道理嗎?

+0

感謝您的回覆。是的,我已經在郵件中有了一本java書,我意識到我的速度非常快,而且很快:)編輯到你的編輯----非常有意義。我最初試圖用getter和setter來「適當」,但我仍然無法讓孩子回到父母的方法。我會用New來修補。謝謝。 – Eric 2011-04-17 23:04:24

+0

@Eric,很高興爲您提供幫助。它肯定會讓人感到困惑,而且Android有時可能只是一種語言,可能會讓事情更加混亂。祝你好運! – 2011-04-17 23:07:50

+0

毀滅的厄運紅線消失了!找到了一種方法來處理實例。謝謝:) – Eric 2011-04-17 23:18:33

2

如果你需要做到這一點而不進行靜態變量,你也可以通過意向數組作爲一個額外的,就像這樣:

intent.putExtra("currentPrices", currentPrices); 
startActivity(intent); 

然後,一旦你在新的活動是,檢索它就像這樣:

int[] currentPrices = getIntent().getIntArrayExtra("currentPrices"); 

它看起來像你從對話框修改原始的,所以短期使用startActivityForResult()和處理這種方式的,克里斯的方法要簡單得多。

相關問題