2011-09-27 20 views

Trả lời

55

Tôi biết câu hỏi này được trả lời đã nhưng tôi có một tốt hơn giải pháp ..

Khi hoạt động của bạn bắt đầu ed chỉ bằng startActivity() phương thức getCallingActivity() trong hoạt động mục tiêu sẽ trả lại null. Khi nó được gọi là startActivityForResult(), nó sẽ trả về tên gọi hoạt động.

Xem getCallingActivity để biết thêm chi tiết.

Vì vậy, bạn có thể đăng ký Hoạt động trước khi kết thúc hoạt động gọi điện. Nếu kết quả là null Hoạt động được gọi bởi startActivity() và nếu kết quả không phải là null thì Activity được gọi là startActivityForResult(). Đó là nó.

dụ: -

if (getCallingActivity() == null) { 
    //This Activity was called by startActivity 
} else { 
    //This Activity was called by startActivityForResult 
} 
+0

một giải pháp sạch hơn cờ thông qua ý định ... cảm ơn – WarrenFaith

+0

@WarrenFaith Cảm ơn bạn. –

+0

Xin lưu ý rằng 'getCallingActivity()' trả về 'null' nếu chế độ khởi động hoạt động của hoạt động bắt đầu là' singleTask' hoặc 'singleInstance', hoặc bắt đầu bằng' FLAG_ACTIVITY_NEW_TASK'. – EpicPandaForce

3

bạn có thể đặt cờ như "0" và "1", đặt ý định, vì vậy nếu "0" thì startActivity hoặc "1" cho startActivityForResult ... điều này thật đơn giản, phải không?

+0

Đây là loại lộn xộn vì bạn xử lý nhiều dữ liệu hơn bạn thực sự cần. Câu trả lời bên dưới từ @PankajKumar là câu trả lời rõ ràng nhất có thể. – WarrenFaith

6

Tôi nghĩ rằng bạn nên phơi bày một số ý định cho cùng một hoạt động trong tệp kê khai của mình, sau đó kiểm tra ý định gọi để điều chỉnh hành vi của bạn.

Ví dụ cho hoạt động bộ lọc của bạn ý trong biểu hiện:

<intent-filter> 
    <action android:name="android.intent.action.VIEW" /> 
    <action android:name="android.intent.action.EDIT" /> 
    <action android:name="android.intent.action.PICK" /> 
    <category android:name="android.intent.category.DEFAULT" /> 
    </intent-filter> 

và mã tương ứng trong hoạt động của bạn onCreate:

if (getIntent().getAction().equals(Intent.ACTION_VIEW)) { 
     // do whatever you need to do here 
} else if (getIntent().getAction().equals(Intent.ACTION_PICK)){ 
... 
} 
+0

đây cũng là một cách tiếp cận gud – Harinder

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