簡體   English   中英

如何完成當前活動並返回上一個片段?

[英]How to finish current activity and go back to previous fragment?

片段中的“添加”按鈕調用該活動。 通過在此活動上按“完成”按鈕,我想使用捆綁包將數據發送到上一個片段並關閉此活動。

我面臨的問題是,在“完成”按鈕上點擊活動沒有任何反應。

分段:

btnAddSkills.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent=new Intent(getActivity(), SkillActivity.class);
                Bundle bundle = new Bundle();
                bundle.putString("caller","editprofile");
                bundle.putParcelableArrayList("userskills", (ArrayList<Skill>) userskills);
                intent.putExtras(bundle);
                startActivity(intent);
            }
        });

活動:

btnDone.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        EditProfileFragment epf = new EditProfileFragment();
                        FragmentManager fm = getSupportFragmentManager();
                        Bundle args = new Bundle();
                        args.putParcelableArrayList("newskills", (ArrayList<Skill>) newskills);
                        epf.setArguments(args);
                        fm.popBackStackImmediate();
                    }
                });

您必須使用界面來共享數據 b/w 活動和片段。在此處檢查

使用開始活動作為結果

Intent intent=new Intent(getActivity(), SkillActivity.class);
       Bundle bundle = new Bundle();
       bundle.putString("caller","editprofile");
       bundle.putParcelableArrayList("userskills", (ArrayList<Skill>) userskills);
       intent.putExtras(bundle);
       startActivityForResult(intent,122);// you can change this number

並在包含片段的活動中添加此實現以將結果傳遞給片段

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
}

並在完成按鈕

btnDone.setOnClickListener(new View.OnClickListener() {
 @Override
 public void onClick(View view) {
 Intent returnIntent = new Intent();
 Bundle args = new Bundle();
 args.putParcelableArrayList("newskills",  
 (ArrayList<Skill>)newskills); 
 returnIntent.putExtras("result", args);                          
 setResult(Activity.RESULT_OK,returnIntent);     
 finish();                      
      }
});

最后在你的片段中實現這個以接收數據

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == 122 && resultCode == Activity.RESULT_OK) {
   Bundel bundle=data.getExtras();
   String caller=data.getString("caller");
   ArrayList<Skill> skills=data.getParcelable("userskills");
 }
}

暫無
暫無

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

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