2012-10-14 26 views
-1

主要類有希望訪問另一個類的兩個變量:我無法設置主類變量中onCreate方法

public class MyClassA extends Activity { 
int i = 1; 
Button b1; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     this.i = 31; 
     this.b1 = (Button) findViewById(R.id.btn1); 
     ~~ 
    } 
} 

二等想打電話給變量mainClass對象:

public class MyclassB implements OnClickListener{ 
    MyClassA mainClass = new MyClassA(); 
    Button btn = mainClass.b1; 
    int n = mainClass.i; 
    public void OnClick(View arg0){ 
     Log.v("btn:",btn); 
     Log.v("int:",n); 
    } 

    //btn returns null; 
    //int returns 1; 

onCreate方法沒有設置變量..

爲什麼沒有設置主類變量this.i=31

回答

2

當您只是將實例化您的活動像一個簡單的類,它不會執行onCreate()這就是爲什麼i值保持爲1。當您使用IntentActivity的onCreate()將被調用。

至於評論,您可能需要爲使用內部類(或)匿名類。請閱讀documentation瞭解更多信息。

+0

但第一次onCreate在使用this.i,this.b1後更改了「i」和「b1」的值,我怎樣才能調用另一個類的變量? – natrollus

+0

你可以讓它們變成靜態的,但請記住可能會引入其他一些令人頭痛的問題。看起來你正在尋找聽衆,然後按照庫馬爾的建議,去與內部類/匿名類。這可能會解決您的問題。 – kosa

+0

http://mobile.tutsplus.com/tutorials/android/java-innder-classes_android/:404錯誤 – natrollus

1

-使用內部類

public class MyClassA extends Activity { 
int i = 1; 
Button b1; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     this.i = 31; 
     this.b1 = (Button) findViewById(R.id.btn1); 
     ~~ 
    } 


    class MyclassB implements OnClickListener{ 

// You can directly access the members of the Outer class from the Inner Class 

    Button btn = b1;  
    int n = i; 

    public void OnClick(View arg0){ 
     Log.v("btn:",btn); 
     Log.v("int:",n); 
    } 

} 

} 
+0

有沒有辦法從其他存檔類訪問主類的成員? – natrollus

+0

2 WAYS..Pass延伸活動到不列入延伸活性的另一Java類的類的活性(即上下文)。或者嘗試製作將Activity擴展爲靜態的類的成員。 –

+0

我可以調用方法等mainClass.getValues()? – natrollus