2013-02-13 27 views
5

Tôi có một vấn đề nhỏ. Tôi muốn bắt đầu hoạt động nhưng theo cách khác. Tôi biết rằngÝ định và bắt đầu hoạt động từ chuỗi

Intent i = new Intent(this, ActivityTwo.class); 

ý định khởi tạo và sau đó tôi có thể startActivity. Nhưng tôi muốn làm điều gì đó tương tự:

Intent i = new Intent(this, MyString.class); 

Tôi không có nameActivity.class, nhưng tôi muốn thay đổi trên string.class. Làm thế nào tôi có thể bắt đầu hoạt động khi tôi có tên chuỗi lớp?

+0

chính xác là gì kịch bản? Bạn đang cố bắt đầu hoạt động dựa trên một số giá trị STRING sẽ được sử dụng làm tên cho Hoạt động sẽ được khởi chạy? – Anukool

+1

http://stackoverflow.com/questions/5754855/how-can-i-start-a-new-android-activity-using-a-string – baboo

+1

Bạn có thể sử dụng phản chiếu nhưng thực sự cần thiết phải không? – Areks

Trả lời

6

Hãy thử điều này: startActivity(this, Class.forName(yourStringClass));

+0

Ý tưởng của hàm tạo (TabsGenerator, Class ) cũng không xác định được :) – user1302569

+0

thử truyền: '(Class ) Class.forName (" YourClass ")' – PaNaVTEC

+0

Intent intent = new Intent (TabsGenerator.this, (Lớp ) Class.forName (StringClassname)); cũng không hoạt động. Cùng một lỗi – user1302569

2

Bạn có thể tra cứu một Class theo tên sử dụng Class.forName("MyString")

6

Dưới đây là một mã mà bạn có thể bắt đầu hoạt động sử dụng tên của hoạt động

Class<?> c = null; 
if(StringClassname != null) { 
    try { 
     c = Class.forName(StringClassname); 
    } catch (ClassNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 
Intent intent = new Intent(mail.this, c); 
startActivity(intent); 

Ở đây tên lớp sẽ là tên đầy đủ của lớp với tên gói. Ví dụ: nếu tên gói của bạn sẽ là x.y.z và nếu bạn có tên Hoạt động được gọi là A thì tên đầy đủ của Hoạt động A sẽ là x.y.z.A.

+0

Ý tưởng của hàm tạo (TabsGenerator, Class ) Là undefined – user1302569

+0

Thay đổi điều này: 'Ý định (TabsGenerator, class ); ' để ' Ý định (TabsGenerator.this, class ;' – jlopez

+0

tôi có đó và vẫn còn những lỗi tương tự – user1302569

1


Class<?> c =Class.forName("YOUR STRING"); 
Intent intent = new Intent(FirstActivity.this, c); 
startActivity(intent); 
+0

Ý tưởng của hàm khởi tạo (TabsGenerator, Class ) Là không xác định – user1302569

+0

Đây có phải là lỗi mà bạn đang gặp phải không? – Anukool

+0

vâng, đây là lỗi khi tôi sử dụng giải pháp đó – user1302569

1

Chỉ cần sử dụng ....

Intent intent = new Intent().setClassName(activity,"packageName"+"className"); 
    startActivity(intent); 
Các vấn đề liên quan