2012-09-05 30 views
5

Làm cách nào để truy cập vào giá trị biến trong một hoạt động khác. Trong ví dụ của tôi, tôi có một mục biến chuỗi có giá trị là giá trị được chọn của spinner. Làm thế nào tôi có thể truy cập biến này trong một hoạt động khác mà không sử dụng Intent?Làm thế nào để tôi nhận được một biến trong một hoạt động khác?

public class LoginScreen extends Activity { 

     Spinner sp; 
String item; 


     Spinner sp = (Spinner) findViewById(R.id.lgnspinner); 

    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
      this, R.array.network_array, 
      android.R.layout.simple_spinner_item); 
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

    sp.setAdapter(adapter); 

    sp.setOnItemSelectedListener(new OnItemSelectedListener() { 

     public void onItemSelected(AdapterView<?> parent, View view, 
       int position, long id) { 
      item = (String) parent.getItemAtPosition(position); 



     public class AgAppMenu extends Activity { 
+0

bản sao có thể có của [Android: Cách khai báo biến toàn cầu?] (Http://stackoverflow.com/questions/708012/android-how-to-declare-global-variables). Vòng đời 'Activity' không nằm trong tầm kiểm soát của bạn và bạn không nên cố gắng kiểm soát nó. Xem câu hỏi được liên kết. –

Trả lời

4

Nếu bạn không muốn sử dụng biến toàn cầu, bạn luôn có thể tạo phương thức trong hoạt động của mình để trả về chuỗi.

public String getMyString(){ 
    return item; 
} 

Sau đó, trong hoạt động hiện tại của bạn, bạn có thể gọi:

String myValue = LoginScreen.getMyString(); 
+0

getMyString() phải được khai báo tĩnh khác không bao giờ có thể truy cập nó. –

14

Bạn có thể khai báo như biến tĩnh và sau đó trong lớp khác của bạn, bạn có thể truy cập chúng như Activity1.stringName.

public static String stringName; 

stringName = .. // value from Spinner 

Sau đó, trong tất cả các hoạt động khác, bạn có thể truy cập chúng như YourMainActivty.stringName.

+0

cách truy cập hoạt động thứ 2? không nhận được hoạt động nào khác tôi sử dụng trong hoạt động thứ 2 LoginScreen.stringname hiển thị lỗi –

+0

Không nên. Bạn có thể đính kèm mã bạn đang sử dụng không? Nó sẽ giúp tôi xác định lỗi của bạn. – Swayam

+0

Phương thức này hoạt động. Cảm ơn bạn. –

1

Hãy thử điều này.

Bước 1: Tạo một đối tượng Bundle tĩnh trong lớp ứng dụng (ApplicationClass.java)

 public static Bundle mMyAppsBundle = new Bundle(): 

Bước 2:.

Đặt giá trị cặp khóa trong đó bó từ bất cứ nơi nào. như thế này:

ApplicationClass.mMyAppsBundle.putString("key","value"); 

Bước 3:

Bây giờ bạn có thể nhận được những giá trị này từ bất cứ nơi nào như theo cách này:

String str = ApplicationClass.mMyAppsBundle.getString("key"); 

Áp dụng kiểm tra null trước khi sử dụng đối tượng bó cho điểm an toàn của xem.

Các vấn đề liên quan