我想將數據從其他活動的onClick事件傳遞到上一個活動的FRAGMENT。我可以看到日誌,它顯示活動到主活動的值,但不能傳遞給主活動的片段。將值傳遞給通過其他活動的onClick事件進行其容器活動的兩個片段
我已經把這個鏈接的引用: Send string from an activity B to a fragment F of activity A
但我是一個初學者,有一個愚蠢的想法,我試過,不能得到預期的結果,而最重要的是,我真的不明白解決方案的想法。
我對界面的使用感到困惑,儘管在解決這個問題的過程中我已經閱讀了許多資源和案例。或者我可以使用另一種解決方案來實現此功能?
感謝您的任何幫助。
主要活動:
Fragment_step_1 getHashMapStep1 = new Fragment_step_1();
Fragment_step_2 getHashMapStep2 = new Fragment_step_2();
......
public void onCreate(Bundle savedInstanceState) {
......
if (savedInstanceState == null) {
Bundle extras = getIntent().getExtras();
Bundle extrasFrag2 = getIntent().getExtras();
boolean getFromConfirmPage = getIntent().getBooleanExtra("checkReturn", fromConfirm);
Log.e("boolean", String.valueOf(getFromConfirmPage));
if(extras == null) {
getEmailFromID = null;
} else {
if(getFromConfirmPage){
strFullName = extras.getString("ConfirmFullName");
strIDNum = extras.getString("ConfirmIDNum");
strDOB = extras.getString("ConfirmDOB");
strPhone = extras.getString("ConfirmPhone");
strEmail = extras.getString("ConfirmEmail");
strAddress = extras.getString("ConfirmAddress");
strPlanPrice = extras.getString("plan_price");
strPlan_type = extras.getString("ConfirmPlanType");
Bundle argsFrag1 = getHashMapStep1.getArguments();
Bundle argsFrag2 = getHashMapStep2.getArguments();
argsFrag1.putString("ConfirmFullName", strFullName);
argsFrag1.putString("ConfirmIDNum", strIDNum);
argsFrag1.putString("ConfirmPhone", strPhone);
argsFrag1.putString("ConfirmEmail", strEmail);
argsFrag2.putString("ConfirmDOB", strDOB);
argsFrag2.putString("ConfirmAddress", strAddress);
getHashMapStep1.setArguments(argsFrag1);
getHashMapStep2.setArguments(argsFrag2);
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.fragmentPersonal, getHashMapStep1);
transaction.replace(R.id.fragment_correspondence, getHashMapStep2);
transaction.addToBackStack(null);
// Commit the transaction
transaction.commit();
} else {
getEmailFromID = extras.getString("Email ID");
strPlan_type = extras.getString("Plan_Type");
strPlanPrice = extras.getString("Plan_Price");
}
}
......
else {
Intent confirmInsure = new Intent(/*main_activity*/.this, /*activity_with_edit_btn*/.class);
Bundle extras = new Bundle();
extras.putString("ConfirmFullName", strFullName);
extras.putString("confirmDOB", strDOB);
extras.putString("ConfirmIDNum", strIDNum);
extras.putString("ConfirmPhone", strPhone);
extras.putString("ConfirmEmail", strEmail);
extras.putString("ConfirmAddress", strAddress);
extras.putString("plan_type", strPlan_type);
extras.putString("plan_price", strPlanPrice);
confirmInsure.putExtras(extras);
startActivity(confirmInsure);
}
}
......
}
活性與 「編輯」 按鈕:
......
btn_editInfo.setOnClickListener(new View.OnClickListener(){
public void onClick(View view){
Intent confirmInsure = new Intent(/*activity_with_edit_btn*/.this, /*To_main_activity*/.class);
Bundle extras = new Bundle();
extras.putString("ConfirmFullName", CustName);
extras.putString("ConfirmIDNum", IDNum);
extras.putString("ConfirmDOB", strDOB);
extras.putString("ConfirmPhone", PhoneNo);
extras.putString("ConfirmEmail", email);
extras.putString("ConfirmAddress", rAddress);
extras.putString("ConfirmPlanType", formatPlanType);
extras.putString("plan_price", planPrice);
extras.putBoolean("checkReturn", fromConfirm);
confirmInsure.putExtras(extras);
startActivity(confirmInsure);
}
});
......
片段1 & 2:
......
@Override //SHOULD I GET VALUES ON THIS METHOD?
public void onActivityCreated(Bundle savedInstanceState){
super.onActivityCreated(savedInstanceState);
Bundle args = this.getArguments();
if (args != null) {
strName = args.getString("ConfirmFullName");
strHKID = args.getString("ConfirmIDNum");
strTel = args.getString("ConfirmPhone");
strEmail = args.getString("ConfirmEmail");
name.setText(strName);
HKIDNumber.setText(strHKID);
getEmail.setText(strEmail);
phone.setText(strTel);
}
//REMAIN TWO VALUES ARE GETTING ON FRAGMENT_2
}
......
@AithPandian感謝您的建議。主要活動就是刪除extra.getString/putString /上的那些代碼,還是保持不變? –
@AjthPandian謝謝,我將學習更多關於Java的設計模式。 –
刪除getString/putString不會影響這個。因爲getString/putString函數用於從Intent中獲取/獲取數據。在這種方法中不使用意圖。 –