2013-02-12 44 views
5

Tôi cần phải chuyển một biến từ (xung quanh) lớp không hoạt động sang lớp học tên người dùng (hoạt động android). Hiển thị giá trị biến được truyền trong dạng xem văn bản .. Vui lòng liên hệ với tôi những gì cần làm từ ví dụ này. Làm thế nào để vượt qua nó để hoạt động androidChuyển biến giữa lớp không hoạt động sang lớp hoạt động android

public class around(non-activity class) 
{ 
    String name = "arjun"; 
    //how to pass this name value to an below activity 
    nameget nam = new nameget(); 
    String new = nam.get(name); 
} 

public class nameget extends Activity(android activity class) 
{ 
    public String get(String name) 
    { 
     String got = name; 
     TextView t1 = (TextView)findViewById(R.id.textView1); 
     t1.setText(name); 
    } 
} 
+0

Câu hỏi đặt ra là, lớp được định nghĩa ở đâu và ngữ cảnh nào xuất hiện trực tiếp từ đó bạn muốn "chuyển" biến "". Ngoài ra, các biến không thể được _passed_, chúng có thể được _shared_; mặt khác, _values_ và _references_ có thể được thông qua. Vì vậy, bạn có bất kỳ yêu cầu cụ thể liên quan đến điều này. –

+0

bạn có thể hiện lớp học đó không? nếu có sử dụng một getter để lấy chuỗi và sử dụng nó bên trong setText. ví dụ t1.setText (around.getString()); – Tobrun

+0

Lớp học có phải là asynctask không? hay là nó được gọi là? Nếu bạn chỉ cần gọi nó, bạn có thể trả về giá trị như trong bất kỳ methodcall bình thường nào. Chỉ cần làm cho một getter. – Gjordis

Trả lời

2

Hãy thử điều này, tuyên bố lớp hoạt động phi bạn trong bạn hoạt động lớp.

public class around(non-activity class) 
{ 
Public static String name; 
name = "arjun"; 
//how to pass this name string to an below activity 
} 

public class nameget extends Activity(android activity class) 
    { 
    around ar = new around(); 
    //declare non activity class here 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
TextView t1 = (TextView)findViewById(R.id.textView1); 
t1.setText(ar.name); 
} 
} 
2

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

public class around(non-activity class) 
    { 
    public static String name = "arjun"; 
     //how to pass this name string to an below activity 
    } 

    public class nameget extends Activity(android activity class) 
    { 
     TextView t1 = (TextView)findViewById(R.id.textView1); 
//your class name around 
     t1.setText(around.name); 
    } 
+0

bạn có câu trả lời không –

1

Bạn chỉ có thể tạo ra phương thức getter và setter cho biến của bạn trong lớp không hoạt động như ..

public String getName(){ 
    return name; 
} 

public void setName(String name){ 
    this.name = name; 
} 

bây giờ từ bất cứ nơi nào bạn có thể nhận/đặt giá trị cho tên như ..

Arround ar = new Arround() 
ar.setName("Aruva"); //To set name 
ar.getName(); // To get 

Trong hoạt động của bạn, chẳng hạn như ..

t1.setText(ar.getName().toString()); 

Và lớp không hoạt động của bạn có thể được tạo bất cứ nơi nào trong cùng một gói hoặc trong một gói khác trong thư mục src ..

0

Khá câu hỏi lạ vì thiết kế của bạn không rõ ràng ở đây. Bạn chuyển các tham số cho hoạt động thông qua gói ý định. Bạn chỉ có thể vượt qua chúng khi bắt đầu hoạt động. Hoạt động có thể chỉ được bắt đầu trên một số đối tượng Context (trong 99% trường hợp hoạt động khác).

Bạn có thể bắt đầu hoạt động từ một số lớp không hoạt động miễn là bạn có quyền truy cập vào ngữ cảnh ở đó. Hoạt động mà bạn sẽ bắt đầu cần phải biết ai là phụ huynh trong trường hợp bấm nút quay lại.

Khi bạn muốn truyền dữ liệu để hoạt động khi bắt đầu nó thấy: How do I pass data between Activities in Android application?

Khi nó không phải trường hợp này - hãy mô tả trường hợp của bạn lớp phi hoạt động của bạn là gì và làm thế nào là nó liên quan đến hoạt động mà bạn muốn chuyển dữ liệu đến.

0

cách tiếp cận tốt nhất cho các vấn đề như vậy là có kiến ​​trúc hướng sự kiện. bạn có thể sử dụng bất kỳ thư viện sự kiện nào, tôi sẽ đề xuất eventBus.

(trong phạm vi eventbus) tạo sticky event gọi NameChangedEvent với một tài sản tên

hoạt động của bạn sẽ lắng nghe nó khi hoạt động (trên sơ yếu lý lịch - tạm dừng). khi tên được thay đổi, bạn sẽ gửi sự kiện này ví dụ:

EventBus.getDefault().post(new NameChangedEvent(name));

hoạt động của bạn sẽ bắt này và cập nhật xem. nó cũng có thể đọc phiên bản mới nhất của sự kiện này trên phương thức Tạo.

điều này tất nhiên là quá mức cần thiết nếu bạn đang cố gắng thực hiện điều này chỉ cho 1 trường. nhưng nhiều ứng dụng cần phải xử lý các thay đổi dữ liệu và cập nhật giao diện người dùng của họ và có các sự kiện là cách tốt nhất (imho) để thực hiện điều đó. điều này giúp bạn ghép nối logic ứng dụng và giao diện người dùng của mình một cách lỏng lẻo.

0

là dễ dàng hơn nếu bạn tiết kiệm một biến kiểu "Class"

Ví dụ: (vui chơi)

Class<?> MyClassSave; 

MyClassSave = MainActivity.class; 

Và bạn có thể nhận được tất cả các giá trị từ .class

bạn có thể làm public/private (static), hoặc pass cho bundle/serializable/Obj

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