2011-11-14 37 views
38

Tôi có 2 hoạt động: Activity1Activity2. Trong mỗi hoạt động này có một nút dẫn tôi đến hoạt động thứ ba (MainActivity). Trong MainActivity Tôi muốn biết từ trang hoạt động nào được gọi.Android nhận hoạt động trước

+4

Bạn có thể đặt nó trên ý định? –

+0

+1 - đồng ý với @ variant-45, đặt 'int' hoặc bất kỳ thứ gì khác làm cờ từ người gọi' Hoạt động ' –

+0

Thêm cờ hoạt động để xác định so với ý định đưa vào mainActivity và vui lòng đặt mã theo ques .. có thể ý tưởng fro trả lời –

Trả lời

45

Bạn có thể sử dụng thuộc tính putExtra của Mục đích để chuyển tên của Hoạt động.

Hoạt động Calling,

Intent intent = new Intent(this, Next.class); 
intent.putExtra("activity","first"); 
startActivity(intent); 

Hoạt động Tiếp theo,

Intent intent = getIntent(); 
String activity = intent.getStringExtra("activity"); 

Bây giờ trong hoạt động chuỗi bạn sẽ lấy tên từ đó Hoạt động nó đã đến.

0

Khi bạn chuyển từ một hoạt động khác bạn có thể Vượt qua Tên hoạt động như đưa ra dưới đây

Intent i = new Intent(this, deliveries.class); 
i.putExtra("ActivityName", "ActivityOne"); 
startActivity(i); 

và kiểm tra tên hoạt động trong các hoạt động khác

Bundle extra = getIntent().getExtras(); 
String activityName = Long.parseLong(extra.getSerializable("ActivityName") 
toString()); 

tôi nghĩ rằng nó có thể giải quyết của bạn vấn đề

12

Bạn có thể sử dụng:

public ComponentName getCallingActivity() 

để biết Hoạt động nào được gọi là Activity hiện tại của bạn.

+20

Chỉ hoạt động nếu bạn bắt đầu hoạt động với 'startActivityForResult()' , không phải 'startActivity()'. –

5

Sử dụng putExtra() để xác định hoạt động trước đó.

Intent i = new Intent(Activity1.this, MainActivity.class).putExtra("from", "activity1"); 
startActivity(i); 

Để kiểm tra hoạt động trong Hoạt động chính,

if(getIntent().getStringExtra("from").equals("activity1")){ 
//From Activity 1 
}else { 
// Activity 2 
} 
0
ActivityManager am = (ActivityManager) this.getSystemService(Activity.ACTIVITY_SERVICE); 
String packageName = am.getRunningTasks(1).get(0).topActivity.getPackageName(); 
String className = am.getRunningTasks(1).get(0).topActivity.getClassName(); 

và chúng tôi đã đặt cho phép:

<uses -permission="-permission" android:name="android.permission.GET_TASKS"> 
</uses> 
+2

Không hoạt động nữa cho các thiết bị Lollipop phía trên. – tasomaniac

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