簡體   English   中英

有沒有辦法在開始新活動之前檢查我是否來自特定活動?

[英]Is there a way to check if I came from a specific activity before starting a new one?

假設我有 3 個活動: ABC 並且所有 3 個活動都可以將用戶引導到另一個活動。 有沒有辦法檢查我是否來自特定活動?

例如,要到達 C,我可以從 B -> C 或 A -> C 移動。但是有沒有辦法檢查我是否來自 B?

您可以通過活動意圖傳遞數據有效負載。傳遞您的活動名稱以檢查用戶來自何處。

開始活動

Intent intent = new Intent(yourFromActivity.this,yourToActivity.class);
intent.putExtra(bundle_key,yourActivityName);
startActivity(intent)

在您的第二個活動中額外檢查意圖並獲取用戶來自的活動名稱。

@override
protected void onCreate(Bundle savedInstanceState){

//check extra key has in bundle.should same as host activity key
   if(getIntent().hasExtra(bundle_key)) 
   {
       //get passed value from intent bundle
       String activity = getIntent().getStringExtra(bundle_key,"");

      if(activity.equel(yourActivityname)){
         //put logic here 
       }      

    }

}

你可以通過兩種方式來做到這一點

  1. 調用活動時在 Intent 中傳遞額外的參數,並在接收者活動中檢查接收到的參數並相應地執行任務。
  2. 調用活動時使用 startActivityForResult() 而不是 startActivity() 並在接收者調用中使用 getCallingActivity().getClassName() 來獲取類名。

在 Intent 中傳遞數據:

調用A類:

Intent intent = new Intent(A.this,C.class);
intent.putExtra("source","A");
startActivity(intent);

接收器類 C:在 onCreate 方法中

String source;
Intent intent = getIntent();
if(intent.hasExtra("source"))
{
 source = intent.getStringExtra("source");
}
//Now you received source class name you can check and perform action 
//accordingly.
if(source.equals("A")
{ 
 //For Class A
}
else{
  
 // For Class B
  }

使用 startActivityForResult():

發件人類別:

 Intent intent = new Intent(A.this,C.class);
 startActivityForResult(intent);

接收器等級:

//In onCreate Method get calling activity name
 getCallingActivity().getClassName();

嘗試這個

Intent intent = new Intent();  
intent.setClass(A.this,Receiveractivity.class);
intent.putExtra("Uniqid","From_Activity_A");  
A.this.startActivity(intent);

Intent intent = new Intent();  
intent.setClass(B.this,Receiveractivity.class);
intent.putExtra("Uniqid","From_Activity_B");  
B.this.startActivity(intent);

Intent intent = new Intent();  
intent.setClass(C.this,Receiveractivity.class);
intent.putExtra("Uniqid","From_Activity_C");  
C.this.startActivity(intent);

意向活動

//obtain  Intent Object send  from SenderActivity
Intent intent = this.getIntent();

/* Obtain String from Intent  */
if(intent !=null)
{
String strdata = intent.getExtras().getString("Uniqid");
if(strdata.equals("From_Activity_A"))
{
//Do Something here...
}
if(strdata.equals("From_Activity_B"))
{
//Do Something here...
}
if(strdata.equals("From_Activity_C"))
{
//Do Something here...
}
  ........
}
else
{
 //do something here
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM