2011-11-20 99 views
0

Screen2.java文件具有下面的代碼:傳遞從Java類中的變量,另一個爲Android

public class screen2 extends Activity { 

    public int globalZip=0; 
     //Some validations & update globalZip 
     //Code control goes to Screen3,java 

} 

Screen3.java文件具有下面的代碼:

public class Screen3 extends Activity 
{ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.screen3); 
     screen2 objs2= new screen2(); 
     int myzip = objs2.globalZip; 

     Toast.makeText(getBaseContext(), "Screen3 "+myzip, 5).show(); 

     System.out.println("WTHDude"+"Screen3 "+myzip); 

    } 

現在我是問題如果我已將Screen2.java文件中的globalZip的值更新爲90034,則不會在屏幕3中更新。任何人都可以幫助我解決這個錯誤。謝謝。

+0

這是因爲你不是你所使用的屏蔽2實例更新globalZip的價值屏幕3。 – craftsman

+0

@ typedef1:「screen2 objs2 = new screen2();」 - 絕對不要使用這種代碼來創建一個「活動」的實例。正如答案中提到的那樣,創建一個'Intent'並向其添加'extra'數據,然後將它傳遞給'startActivity(...)'或'startActivityForResulrt(...) – Squonk

回答

5

那麼,你正在創建一個Screen2的新實例,所以當然你會返回globalZip的初始值,因爲它不是一個靜態類成員。

說了這樣的話,你可能真的不希望它成爲一個靜態成員。

但更重要的是,你正在做這個完全錯誤的。如果您希望將數據從一個活動傳遞到另一個活動,則只需將簡單數據(如字符串/布爾值/整數)傳遞到啓動Screen3的Intent。

事情是這樣的:

// inside Screen2.java 
Intent intent = new Intent(this, Screen3.class); 
intent.putExtra("screen2.globalzip", globalZip); 

然後獲得價值Screen3.java:

Bundle extras = getIntent().getExtras(); 
int globalZip = extras.getInt("screen2.globalzip"); 
相關問題